一、在app.config文件中,配置日志存放的格式与位置
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net-net-2.0"/>
</configSections>
<log4net>
<root>
<appender-ref ref="ErrorLogFileAppender"/>
<appender-ref ref="DebugLogFileAppender"/>
<appender-ref ref="SqlLogFileAppender"/>
</root>
<!--记录错误-->
<appender name="ErrorLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log\\Error\\" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<param name="MaxSizeRollBackups" value="100"/>
<param name="StaticLogFileName" value="false"/>
<datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/>
<staticLogFileName value="false"/>
<encoding value="utf-8" />
<lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<param name="conversionPattern" value="时间:%date%n线程:[%t]%n类型:%-5level%n调用类:%logger%n内容:%message%newline%n--------------------------------------------------------------------%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR"/>
<param name="LevelMax" value="ERROR"/>
</filter>
</appender>
<!--记录调试日志-->
<appender name="DebugLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log\\Debug\\" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<param name="MaxSizeRollBackups" value="100"/>
<param name="StaticLogFileName" value="false"/>
<datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/>
<staticLogFileName value="false"/>
<encoding value="utf-8" />
<lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<!--<param name="ConversionPattern" value="[%p] [%d{MM/dd/yyyy HH:mm:ss,fff}] [%t] [%c]- %m%n"/>-->
<param name="conversionPattern" value="时间:%date%n线程:[%t]%n类型:%-5level%n调用类:%logger%n内容:%message%newline%n--------------------------------------------------------------------%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="DEBUG"/>
</filter>
</appender>
<!--记录sql语句日志-->
<appender name="SqlLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="log\\Sql\\" />
<appendToFile value="true" />
<rollingStyle value="Date" />
<param name="MaxSizeRollBackups" value="100"/>
<param name="StaticLogFileName" value="false"/>
<datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/>
<staticLogFileName value="false"/>
<encoding value="utf-8" />
<lockingModel type="log4net.Appender.RollingFileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<param name="conversionPattern" value="时间:%date%n标题:%logger%n内容:%message%newline%n--------------------------------------------------------------------%n" />
</layout>
</appender>
<!--调试模式,输出日志到控制台-->
<appender name="ConsoleAppender" type="log4net.Appender.ColoredConsoleAppender">
<mapping>
<level value="ERROR"/>
<foreColor value="Red, HighIntensity"/>
<!--<backColor value="Green" />-->
</mapping>
<mapping>
<level value="DEBUG"/>
<foreColor value="Yellow, HighIntensity"/>
<backColor value="Green"/>
</mapping>
<layout type="log4net.Layout.PatternLayout">
<footer value="--------------------------------------------------------------------"/>
<!--<param name="ConversionPattern" value="[%p] [%d{MM/dd/yyyy HH:mm:ss,fff}] [%t] [%c]- %m%n"/>-->
<param name="conversionPattern" value="时间:%date%n线程:[%t]%n类型:%-5level%n标题:%logger%n内容:%message%newline%n--------------------------------------------------------------------%n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG"/>
<param name="LevelMax" value="ERROR"/>
</filter>
</appender>
</log4net>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
<supportedRuntime version="v2.0.50727"/>
</startup>
</configuration>
二、在包含program.cs文件的程序集下面,找到Properties,在其下面的AssemblyInfo.cs中添加一句:[assembly: log4net.Config.XmlConfigurator(Watch = true)]
三、写一个类,在这个类的命名空间上加上一句:[assembly: log4net.Config.XmlConfigurator(Watch = true)],在类中写记录日志的调用方法,如
public class LogHelper { public static void Debug(string message) { StackTrace trace = new StackTrace(); StackFrame frame = trace.GetFrame(1); MethodBase method = frame.GetMethod(); log4net.ILog log = log4net.LogManager.GetLogger(method.DeclaringType); if (log.IsDebugEnabled) { log.Debug(message); } log = null;
}
}
四、调用方法,在引用项目后调用即可:
try { //可能报错的代码 ... } catch(Exception ex) { LogHelper.Debug(ex.message); }