在web及winform中配置log4net.dll和在windows服务中使用log4net.dll
在web及winform中配置log4net.dll:
1.需要在web.config中配置两段代码:
<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections>
<log4net> <!-- System Trace--> <logger name="Info"> <level value="INFO"/> <appender-ref ref="RollingInfo"/> </logger> <logger name="Error"> <level value="ERROR"/> <appender-ref ref="RollingError"/> </logger> <logger name="Trace"> <level value="INFO"/> <appender-ref ref="RollingTrace"/> </logger> <appender name="RollingInfo" type="log4net.Appender.RollingFileAppender"> <file value="Logs\Info\Info"/> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value="yyyyMMdd'.txt'"/> <staticLogFileName value="false"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%d[%p][%t]%c %m%n"/> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="INFO"/> <param name="LevelMax" value="INFO"/> </filter> </appender> <appender name="RollingError" type="log4net.Appender.RollingFileAppender"> <file value="Logs\Error\Error"/> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value="yyyyMMdd'.txt'"/> <staticLogFileName value="false"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%d[%p][%t]%c %m%n"/> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="ERROR"/> <param name="LevelMax" value="ERROR"/> </filter> </appender> <appender name="RollingTrace" type="log4net.Appender.RollingFileAppender"> <file value="Logs\Trace\Trace"/> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value="yyyyMMdd'.txt'"/> <staticLogFileName value="false"/> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%d[%p][%t]%c %m%n"/> </layout> <filter type="log4net.Filter.LevelRangeFilter"> <param name="LevelMin" value="INFO"/> <param name="LevelMax" value="INFO"/> </filter> </appender> <!-- NHibernate trace --> <logger name="NHibernate" additivity="false"> <level value="WARN"/> <appender-ref ref="RollingFile"/> </logger> <logger name="NHibernate.SQL" additivity="false"> <level value="DEBUG"/> <appender-ref ref="RollingFile"/> </logger> <appender name="RollingFile" type="log4net.Appender.RollingFileAppender,log4net"> <file value="Logs\Debug\Debug"/> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value="yyyyMMdd'.txt'"/> <staticLogFileName value="false"/> <layout type="log4net.Layout.PatternLayout,log4net"> <conversionPattern value="%d %p %m%n"/> </layout> </appender> </log4net>
在Global.asax中或者起始类或者配置中加入 log4net.Config.XmlConfigurator.Configure();
项目引用log4net.dll
2.在windows服务中使用log4net.dll
配置此项和1差不多,但是需要在打开 properties/assemblyinfo.cs
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "app.config", Watch = true)]
config文件中的configSections属性也需要更改成
<configSections> <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/> </configSections>
在Global.asax中或者起始类或者配置中加入
log4net.Config.XmlConfigurator.Configure();或
log4net.ILog logger = log4net.LogManager.GetLogger("MdaoToBeyondbitSMS");
选择始终复制;
3.下面是使用本次配置的类代码:使用类似于:
using System; using System.Collections.Generic; using System.Text; using log4net; using System.Diagnostics; using System.Reflection; namespace Utilities { public class LogHelper { private static readonly ILog logInfo = LogManager.GetLogger("Info"); private static readonly ILog logError = LogManager.GetLogger("Error"); private static readonly ILog logTrace = LogManager.GetLogger("Trace"); public static void info(string msg) { logInfo.Info(msg); } public static void error(string msg) { StackTrace stackTrace = new StackTrace(); StackFrame stackFrame = stackTrace.GetFrame(1); MethodBase methodBase = stackFrame.GetMethod(); logError.Error("类名:" + methodBase.ReflectedType.Name + " 方法名:" + methodBase.Name + " 信息:" + msg); } public static void trace(string msg) { logTrace.Info(msg); } } }