log4net 配置
1.在项目中引入log4net.dll组件;
2.在App.congfig中做如下修改(可省略)
在加入如下内容:
这个节点最好放在<configuration>下的第一个位置,不然在服务里会报错。
<configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections>
<log4net> <!--定义输出到文件中--> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <!--定义文件存放位置--> <file value="log\\"/> <appendToFile value="true"/> <rollingStyle value="Date"/> <datePattern value="yyyy\\yyyyMM\\yyyyMMdd'.txt'"/> <staticLogFileName value="false"/> <param name="MaxSizeRollBackups" value="100"/> <layout type="log4net.Layout.PatternLayout"> <!--每条日志末尾的文字说明--> <!--输出格式--> <!--样例:2015-06-08 13:42:32,111 [10] INFO Log4NetDemo.MainClass [(null)] - info--> <conversionPattern value="%newline %n记录时间:%date %n线程ID:[%thread] %n操作类:%logger property: [%property{NDC}] - %n日志描述:%message%newline %n"/> </layout> </appender> <root> <level value="INFO"/> <!--文件形式记录日志--> <appender-ref ref="RollingLogFileAppender"/> </root> </log4net>
3.新建LogHelp.cs文件
using System; using System.Collections.Generic; using System.Text; using log4net; using System.Diagnostics; using System.Reflection; namespace WinService { public class LogHelper { private static readonly ILog logInfo = LogManager.GetLogger("Log"); private static readonly ILog logErr = LogManager.GetLogger("Err"); /// <summary> /// 记录正常的消息 /// </summary> /// <param name="msg">消息内容</param> public static void info(string msg) { logInfo.Info(msg); } /// <summary> /// 记录异常信息 /// </summary> /// <param name="msg">异常信息内容</param> public static void error(string msg) { StackTrace stackTrace = new StackTrace(); StackFrame stackFrame = stackTrace.GetFrame(1); MethodBase methodBase = stackFrame.GetMethod(); logErr.Error("类名:" + methodBase.ReflectedType.Name + " 方法名:" + methodBase.Name + " 信息:" + msg); } } }
4.在项目的Properties\AssemblyInfo.cs文件中加入如下内容:
这段代码也可以放到LogHelp.cs类中申明
注意: ConfigFile 可以指定相对路径 和 绝对路径。 eg: /log/xxxx.log 或者 d://log//xxxx.log
[assembly: log4net.Config.XmlConfigurator(ConfigFile="Log4Net.config", Watch=true)]
注意:根据第4步的配置,应该把log4net的配置文件放到项目的bin/Debug 或者 bin/Release目录下,否则会出现找不到配置文件而无法创建logger对象。
(web的项目,直接放在web项目的根目录下即可)
如果loghelp里指定了Log4Net.config,就不用在web.config再次配置(可省略第二步),其实参考
https://blog.csdn.net/coolcoffee168/article/details/7692589
5.解决输出乱码: 在节点 appender 里面增加如下节点。
<encoding value="UTF-8" />