1 首先在nuGet管理器上下载Log4Net包
2 在项目的根目录下新建log4net.config 文件
3 配置log4net,具体详细配置如下:
<?xml version="1.0"?>
<configuration>
<configSections>
<!--Add Log4Net Section-->
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<log4net>
<!--定义日志的输出媒介,下面定义日志以五种方式输出。也可以下面的按照一种类型或其他类型输出。-->
<root>
<!--control log level: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
<!--如果没有定义LEVEL的值,则缺省为DEBUG-->
<level value="ALL"/>
<!--文件形式记录日志-->
<appender-ref ref="DEBUG_FILE"/>
<appender-ref ref="INFO_FILE"/>
<appender-ref ref="ERROR_FILE"/>
<!--控制台显示日志-->
<!--<appender-ref ref="ConsoleAppender"/>-->
</root>
<appender name="RemotingAppender" type="log4net.Appender.RemotingAppender" >
<sink value="tcp://localhost:8085/LoggingSink" />
<lossy value="false" />
<bufferSize value="95" />
<onlyFixPartialEventData value="true" />
</appender>
<!-- 此日志文件只记录debug级别的 -->
<appender name="DEBUG_FILE" type="log4net.Appender.RollingFileAppender,log4net" >
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="DEBUG" />
<param name="LevelMax" value="DEBUG" />
</filter>
<!--日志的路径-->
<file value="log/app-log/" />
<!--是否覆盖,默认是追加true-->
<appendToFile value="true"/>
<rollingStyle value="Composite"/>
<!--文件名称-->
<DatePattern value="\debu\g-yyyy-MM-dd.lo\g"></DatePattern>
<!--文件字符编码-->
<param name="Encoding" value="utf-8"/>
<!--设置无限备份=-1 ,最大备份数为100-->
<param name="MaxSizeRollBackups" value="100"/>
<!--每个文件的大小-->
<param name="MaximumFileSize" value="500KB"/>
<!--名称是否可以更改为false为可以更改-->
<param name="StaticLogFileName" value="false"/>
<!--保持文件扩展名一直为.log-->
<!--<param name="PreserveLogFileNameExtension" value="true"/>-->
<!--最小锁定模型以允许多个进程可以写入同一个文件-->
<param name="lockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<!--输出格式-->
<!--<param name="ConversionPattern" value="记录时间:%date 线程ID:[%thread] 日志级别:%-5level 记录类:%logger 操作者ID:%property{Operator} 操作类型:%property{Action}%n 当前机器名:%property%n当前机器名及登录用户:%username %n 记录位置:%location%n 消息描述:%property{Message}%n 异常:%exception%n 消息:%message%newline%n%n" /> -->
<conversionPattern value="%date [%thread] %-5level %logger %method(%line) [%property{NDC}] %message %exception %newline"/>
</layout>
<!--<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%d [%t] %-5p %c - %m%n" />
</layout>-->
</appender>
<!-- 此日志文件只记录info级别的 -->
<appender name="INFO_FILE" type="log4net.Appender.RollingFileAppender,log4net" >
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
<param name="LevelMax" value="INFO" />
</filter>
<!--日志的路径-->
<file value="log/app-log/" />
<!--是否覆盖,默认是追加true-->
<appendToFile value="true"/>
<rollingStyle value="Composite"/>
<!--文件名称-->
<DatePattern value="in\fo-yyyy-MM-dd.lo\g"></DatePattern>
<!--文件字符编码-->
<param name="Encoding" value="utf-8"/>
<!--设置无限备份=-1 ,最大备份数为100-->
<param name="MaxSizeRollBackups" value="100"/>
<!--每个文件的大小-->
<param name="MaximumFileSize" value="500KB"/>
<!--名称是否可以更改为false为可以更改-->
<param name="StaticLogFileName" value="false"/>
<!--保持文件扩展名一直为.log-->
<!--<param name="PreserveLogFileNameExtension" value="true"/>-->
<!--最小锁定模型以允许多个进程可以写入同一个文件-->
<param name="lockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<!--输出格式-->
<conversionPattern value="%date [%thread] %-5level %logger %method(%line) [%property{NDC}] %message %exception %newline"/>
</layout>
</appender>
<!-- 此日志文件只记录info级别的 -->
<appender name="ERROR_FILE" type="log4net.Appender.RollingFileAppender,log4net" >
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="ERROR" />
<param name="LevelMax" value="ERROR" />
</filter>
<!--日志的路径-->
<file value="log/app-log/" />
<!--是否覆盖,默认是追加true-->
<appendToFile value="true"/>
<rollingStyle value="Composite"/>
<!--文件名称-->
<DatePattern value="error-yyyy-MM-dd.lo\g"></DatePattern>
<!--文件字符编码-->
<param name="Encoding" value="utf-8"/>
<!--设置无限备份=-1 ,最大备份数为100-->
<param name="MaxSizeRollBackups" value="100"/>
<!--每个文件的大小。只在混合方式与文件大小方式下使用,超出大小的在文件名后自动增加1重新命名-->
<param name="MaximumFileSize" value="500KB"/>
<!--名称是否可以更改为false为可以更改-->
<param name="StaticLogFileName" value="false"/>
<!--最小锁定模型以允许多个进程可以写入同一个文件-->
<param name="lockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<!--输出格式-->
<conversionPattern value="%date %-5level %logger %method(%line) [%property{NDC}] %message %exception %newline"/>
</layout>
</appender>
<!--定义输出到控制台命令行中-->
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<!--<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="INFO" />
</filter>-->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger %method(%line) [%property{NDC}] %message%newline"/>
</layout>
</appender>
<!--<logger name="Log4NetTest.LogTest">
<level value="DEBUG" />
<appender-ref ref="rollingFile" />
<appender-ref ref="coloredConsoleApp" />
<appender-ref ref="SystemEvent" />
</logger>-->
</log4net>
</configuration>
4 在AssemblyInfo.cs 类中添加配置文件引用:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
5 测试配置是否成功:
using log4net;
using Survey;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp1
{
class Program
{
private static readonly ILog logger = LogManager.GetLogger(typeof(Program));
static void Main(string[] args)
{
logger.Info("info");
logger.Error("error");
logger.Debug("debug");
}
}
}
最后会在xxx/ConsoleApp1\bin\Debug\log/app-log/下生成三个日志文件的话就成功了!
关于log4Net更多详细信息请参考:
log4Net使用及配置注解(整理)
非常完善的Log4net详细说明
log4Net官方例子
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/17908.html