Log4Net 使用技巧
1. 利用nuget对log4net的引用
2. 在项目中添加log4Net.Config文件
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <root> <level value="ALL" /> <appender-ref ref="RollingLogFileAppender" /> <appender-ref ref="ConsoleAppender" /> </root> <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender" > <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="[%date] %level [%thread][%c{1}:%line] - %m%n" /> </layout> </appender> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender" > <param name="File" value="logss/aa.txt" /> <!--<param name="DatePattern" value="'.'yyyy-MM-dd-HH'.log'" />--> <param name="DatePattern" value="yyyy-MM-dd".log"" /> <param name="AppendToFile" value="true" /> <param name="RollingStyle" value="Date" /> <param name="StaticLogFileName" value="true" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date %level %thread %logger - %message %newline" /> - </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="INFO" /> </filter> </appender> </log4net> </configuration>
StaticLogFileName 为true时File参数就要有固定的文件名,如果为false时 只需要写文件夹名称即可
<conversionPattern value="%date %level %thread %logger - %message %newline" /> 在文件中输出的内容格式
<param name="DatePattern" value="yyyy-MM-dd".log"" /> 动态生成文件的格式
当生成的日志过大时可以采用按小时生成并且创建日期文件夹
<param name="DatePattern" value="yyyy-MM-dd/yyyy-MM-dd-HH".log"" />
3. 对于AssemblyInfo.cs文件添加 特性
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)] 注意此处的log2net.config与刚才添加的文件名保持一致
4. 添加记日志的Helper类
public class Log4NetHelper { private static readonly ILog logger = LogManager.GetLogger("RollingLogFileAppender"); public static void WriteLog(string message) { logger.Info(message); } }
日志可以分组:
<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" /> </configSections> <log4net> <root> <level value="ALL" /> </root> <logger name="CalledLogger"> <level value="ALL" /> <appender-ref ref="CalledInfoAppender" /> <appender-ref ref="CalledErrorAppender" /> </logger> <logger name="CallingLogger"> <level value="ALL" /> <appender-ref ref="CallingInfoAppender" /> <appender-ref ref="CallingErrorAppender" /> </logger> <logger name="InfoLogger"> <level value="ALL" /> <appender-ref ref="InfoAppender" /> <appender-ref ref="ErrorAppender" /> </logger> <!-- 被调函数记录调用参数和调用返回结果 --> <appender name="CalledInfoAppender" type="log4net.Appender.RollingFileAppender,log4net" > <param name="File" value="Logs\CalledInfo\" /> <param name="AppendToFile" value="true" /> <param name="RollingStyle" value="Date" /> <param name="DatePattern" value="yyyy-MM-dd".log"" /> <param name="StaticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="INFO" /> </filter> </appender> <!-- 被调函数记录内部错误原因 --> <appender name="CalledErrorAppender" type="log4net.Appender.RollingFileAppender,log4net" > <param name="File" value="Logs\CalledError\" /> <param name="AppendToFile" value="true" /> <param name="RollingStyle" value="Date" /> <param name="DatePattern" value="yyyy-MM-dd".log"" /> <param name="StaticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}] %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ERROR" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> <!-- 调用接口记录调用参数和调用返回结果--> <appender name="CallingInfoAppender" type="log4net.Appender.RollingFileAppender,log4net" > <param name="File" value="Logs\CallingInfo\" /> <param name="AppendToFile" value="true" /> <param name="RollingStyle" value="Date" /> <param name="DatePattern" value="yyyy-MM-dd".log"" /> <param name="StaticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="%m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="INFO" /> </filter> </appender> <!-- 调用返回错误是记录错误信息 --> <appender name="CallingErrorAppender" type="log4net.Appender.RollingFileAppender,log4net" > <param name="File" value="Logs\CallingError\" /> <param name="AppendToFile" value="true" /> <param name="RollingStyle" value="Date" /> <param name="DatePattern" value="yyyy-MM-dd".log"" /> <param name="StaticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ERROR" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> <!-- 程序内部调试日志 --> <appender name="InfoAppender" type="log4net.Appender.RollingFileAppender,log4net" > <param name="File" value="Logs\LogsInfo\" /> <param name="AppendToFile" value="true" /> <param name="RollingStyle" value="Date" /> <param name="DatePattern" value="yyyy-MM-dd".log"" /> <param name="StaticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="INFO" /> <param name="LevelMax" value="INFO" /> </filter> </appender> <!-- 程序内部调试错误日志 --> <appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender,log4net" > <param name="File" value="Logs\LogsError\" /> <param name="AppendToFile" value="true" /> <param name="RollingStyle" value="Date" /> <param name="DatePattern" value="yyyy-MM-dd".log"" /> <param name="StaticLogFileName" value="false" /> <layout type="log4net.Layout.PatternLayout,log4net"> <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} %m%n" /> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ERROR" /> <param name="LevelMax" value="ERROR" /> </filter> </appender> </log4net> </configuration>
c# 调用程序
public class Log4NetHelper { private static readonly ILog logger = LogManager.GetLogger("RollingLogFileAppender"); private static readonly ILog calledLogger = LogManager.GetLogger("CalledLogger"); private static readonly ILog callingLogger = LogManager.GetLogger("CallingLogger"); private static readonly ILog infoLogger = LogManager.GetLogger("InfoLogger"); public static void WriteLog(string message) { //log4net.Config.XmlConfigurator.Configure(); logger.Info(message); } }

浙公网安备 33010602011771号