一 安装配置log4net
1. 下载log4net
选择生成的项目,右键,再选择‘Manage NuGet Packages’
2. 搜索log4net,并安装
1. 选择生成的项目,右键添加‘App.config’
4. 写配置文件
在上一步生成的App.config中写log4net的配置文件
<configurattion>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
</configSections>
<log4net>
<root>
<level value="ALL"/>
</root>
<logger name="OperationLog">
<level value="INFO"/>
<appender-ref ref="OperationLogAppender"/>
</logger>
<logger name="ErrorLog">
<level value="WARN"/>
<appender-ref ref="ErrorLogAppender"/>
</logger>
<!--定义输出到文件中-->
<appender name="OperationLogAppender" type="log4net.Appender.RollingFileAppender,log4net">
<!--输出日志文件的路径-->
<param name="File" value="Log/OperationLog"/>
<!--输出日志时自动向后追加-->
<param name="AppenderToFile" value="true"/>
<!--防止多线程时不能写Log,官方说线程非安全,但实际使用时,本地测试正常,部署后有不能写日志的情况-->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!--日志以大小作为备份样式,还有一种方式是Date(日期)-->
<param name="RollingStyle" value="size"/>
<!--单个日志的最大容量,(可用的单位:KB|MB|GB)不要使用小数,否则会一直写入当前日志-->
<param maximumFileSize value="3M"/>
<!--日志最大个数,都是最新的-->
<maxSizeRollBackups value="10" />
<param name="DatePattern" value="yyyyMMdd".log""/>
<!--置为true,当前最新日志文件名永远为file节中的名字-->
<param name="StaticLogFileName" value="false"/>
<!--输出格式-->
<!--样例:2008-03-26 13:42:32,111 [10] INFO ErrorLog - info-->
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d[%t]%-5p %c - %m%n"/>
</layout>
</appender>
<appender name="ErrorLogAppender" type="log4net.Appender.RollingFileAppender,log4net">
<!--<param name="File" type="log4net.Util.PatternString" value="Log/OperationLog"/>-->
<param name="File" value="Log/ErrorLog"/>
<param name="AppenderToFile" value="true"/>
<param name="RollingStyle" value="Composite"/>
<param name="DatePattern" value="yyyyMMdd".log""/>
<param name="StaticLogFileName" value="false"/>
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d[%t]%-5p %c - %m%n"/>
</layout>
</appender>
</log4net>
</configuration>
5. 配置文件拷贝到目标目录
选择App.config, 在属性栏把Copy to Output Directoru项选为copy if newer
6. 给log4net文件名赋值
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "App.config", ConfigFileExtension = "config", Watch = true)]
namespace Xxxxx
{
public partial class App:Application
{
public static log4net.ILog operationLog = log4net.LogManager.GetLogger("OperationLog");
public static log4net.ILog errorLog = log4net.LogManager.GetLogger("ErrorLog");
}
}
7. 写入log信息
public partial class MainWindow: Window
{
public MainWindow()
{
App.errorLog.Infor("启动程序");
}
}
private void Button_Click(object sender,RoutedEventArgs e)
{
App.OperationLog.Info("按下开始按钮");
}
实例演示
二 log4net配置文件中XML转义字符
转义字符 | 字符 |
---|---|
& | & |
< | < |
> | > |
" | " |
&apos | ’ |
  | 空格 |
© | ©(版权符) |
® | ®(注册符) |
三 log4net配置文件中ConversionPattern的代码解释
代码 | 意思 | 解释 |
---|---|---|
%m | message | 输出日志消息 |
%n | new line | 换行 |
%d | datetime | 输出当前语句的运行时间 |
%r | runtime | 输出程序从运行到执行当前语句时消耗的毫秒数 |
%t | thread id | 输出当前语句所在的线程ID |
%p | priority | 日志的当前优先级,DEBUG,INFO,WARN… |
%c | class | 当前日志对象的名称 |
%L |