First, NuGet installation log4net
Second, add log4net.config configuration file
<?xml version= "1.0" encoding= "Utf-8"?><configuration> <configSections> <!--Add custom nodes: log4net Type: Resolves the class name, assembly name (Log4net.dll)-<section name= "log4net" type= "log4net". Config.log4netconfigurationsectionhandler, log4net "/> </configSections> <log4net> <root> &l t;! --<level value= "DEBUG"/>--> <!--control level, from low to High: all| debug|info| warn| error| fatal| OFF all indicates that all log requests are allowed. Off is to reject all requests. -<!--such as defining level info, the level of the info level downward, such as the debug log will not be recorded--<level value= "All"/> <!--recorded to a different log level Log Files--<appender-ref ref= "errorlog"/> </root> <!--error--> <appender name= "Errorl OG "type=" log4net. Appender.rollingfileappender "> <file value=" log/"/> <appendtofile value=" true "/> <rollin Gstyle value= "Date"/> <!--date format, each day for a file record, if not set to always record only one day of the log, need to set--<datepattern value= "YYYYMMDD" _erro R.log ""/> <!--log file name is static---< Staticlogfilename value= "false"/> <!--multi-threaded with minimal lock-in <lockingmodel type= "log4net. Appender.fileappender+minimallock "/> <!--layout (show the user the last formatted output information)--<layout type=" log4net. Layout.patternlayout "> <conversionpattern value="%date thread Id:[%thread] Log level:%-5level Error class:%logger PROPERTY:[%PR OPERTY{NDC}]-error description:%message%newline "/> </layout> <securitycontext type=" log4net. Util.windowssecuritycontext "> <credentials value=" Process "/> </securityContext> <filte R type= "Log4net. Filter.levelrangefilter "> <levelmin value=" DEBUG "/> <levelmax value=" ERROR "/> </fil Ter> </appender> <!--error--> </log4net></configuration>Iii. Preparation of Loghelper
Using grabnovelapi;using log4net;using system;using system.collections.concurrent;using System.Collections.Generic; Using System.text;namespace grab.api{public static class Loghelper {private static readonly concurrentdiction Ary<type, ilog> loggers = new Concurrentdictionary<type, ilog> (); <summary>///Capture recorder///</summary>//<param name= "source" >soruce</param> ; <returns></returns> private static ILog GetLogger (Type source) {if (Loggers.cont Ainskey (source)) {return loggers[source]; } else {ILog logger = Logmanager.getlogger (Startup.repository.name,source); Loggers.tryadd (source, logger); return logger; }///LOG A Message Object *////<summary>//debug information///</summary> <param name= "SOURCE ">source</param>//<param name=" message ">message</param> public static void Deb UG (object source, String message) {Debug (source. GetType (), message); }///<summary>//debug information///</summary>//<param name= "source" >source</ param>//<param name= "message" >message</param>///<param name= "PS" >ps</param> public static void Debug (object source, String message, params object[] PS) {debug (source. GetType (), String. Format (Message, PS)); }///<summary>//debug information///</summary>//<param name= "source" >source</ param>//<param name= "message" >message</param> public static void Debug (Type source, string Message) {ILog logger = GetLogger (source); if (logger. isdebugenabled) {logGer. Debug (message); }}///<summary>//Key information///</summary>//<param name= "source" >so urce</param>//<param name= "message" >message</param> public static void Info (object sour CE, Object message) {Info (source. GetType (), message); }///<summary>//Key information///</summary>//<param name= "source" >source</ param>//<param name= "message" >message</param> public static void Info (Type source, Object Message) {ILog logger = GetLogger (source); if (logger. isinfoenabled) {logger. Info (message); }}////<summary>/////</summary>//<param name= "source" >so urce</param>//<param name= "message" >message</param> public static void Warn (object sOurce, Object message) {Warn (source. GetType (), message); }///<summary>/////</summary>//<param name= "source" >source</ param>//<param name= "message" >message</param> public static void Warn (Type source, Object Message) {ILog logger = GetLogger (source); if (logger. iswarnenabled) {logger. Warn (message); }}///<summary>///error messages///</summary>//<param name= "source" >so urce</param>//<param name= "message" >message</param> public static void Error (Object sou Rce, Object message) {Error (source. GetType (), message); }///<summary>//Error messages///</summary>//<param name= "source" >source</ param>//<param name= "message" >message</param> public static void Error (Type source, object message) {ILog logger = GetLogger (source); if (logger. iserrorenabled) {logger. Error (message); }}///<summary>//failure information///</summary>//<param name= "source" >so urce</param>//<param name= "message" >message</param> public static void Fatal (Object sou Rce, Object message) {Fatal (source. GetType (), message); }//<summary>//failure information///</summary>//<param name= "source" >source</ param>//<param name= "message" >message</param> public static void Fatal (Type source, Object Message) {ILog logger = GetLogger (source); if (logger. isfatalenabled) {logger. Fatal (message); }}/* Log a Message object and EXception *//////<summary>////</summary>//<param name= "source" >s ource</param>//<param name= "message" >message</param>///<param Name= "Exception" > ex</param> public static void Debug (object source, Object message, Exception Exception) {D Ebug (source. GetType (), message, exception); }///<summary>//debug information///</summary>//<param name= "source" >source</ param>//<param name= "message" >message</param>///<param name= "Exception" >ex</par am> public static void Debug (Type source, Object message, Exception Exception) {GetLogger (sou RCE). Debug (message, exception); }///<summary>//Key information///</summary>//<param name= "source" >source</ param>//<param name= "message" >message</param>//<param name= "Exception" >ex</param> public static void Info (object source, obj ECT message, Exception Exception) {Info (source. GetType (), message, exception); }///<summary>//Key information///</summary>//<param name= "source" >source</ param>//<param name= "message" >message</param>///<param name= "Exception" >ex</par am> public static void Info (Type source, Object message, Exception Exception) {GetLogger (sour CE). Info (message, exception); }///<summary>/////</summary>//<param name= "source" >source</ param>//<param name= "message" >message</param>///<param name= "Exception" >ex</par am> public static void Warn (object source, Object message, Exception Exception) {Warn (source. GettYpe (), message, exception); }///<summary>/////</summary>//<param name= "source" >source</ param>//<param name= "message" >message</param>///<param name= "Exception" >ex</par am> public static void Warn (Type source, Object message, Exception Exception) {GetLogger (sour CE). Warn (message, exception); }///<summary>//Error messages///</summary>//<param name= "source" >source</ param>//<param name= "message" >message</param>///<param name= "Exception" >ex</par am> public static void Error (object source, Object message, Exception Exception) {error (SOURC E.gettype (), message, exception); }///<summary>//Error messages///</summary>//<param name= "source" >source</ param>//<param NAMe= "message" >message</param>//<param name= "Exception" >ex</param> public static void Error (Type source, Object message, Exception Exception) {GetLogger (source). Error (message, exception); }//<summary>//failure information///</summary>//<param name= "source" >source</ param>//<param name= "message" >message</param>///<param name= "Exception" >ex</par am> public static void Fatal (object source, Object message, Exception Exception) {Fatal (SOURC E.gettype (), message, exception); }//<summary>//failure information///</summary>//<param name= "source" >source</ param>//<param name= "message" >message</param>///<param name= "Exception" >ex</par am> public static void Fatal (Type source, Object message, Exception Exception) { GetLogger (source). Fatal (message, exception); } }}Iv. Use of
Using log4net in. NET core2.0