1.首先安装 Log4net
Install-Package log4net -Version 2.0.8
2.项目目录中新增Log4net配置文件log4net.config
file:日志文件的默认位置
dataPatten:日志文件名称
下面的配置文件配置的路径是:项目根目录\logs\日志类型\yyyyMMdd\yyyyMMdd_hh.log
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net>
<!-- Debug 将日志以回滚文件的形式写到文件中 -->
<appender name="RollingFileDebug" type="log4net.Appender.RollingFileAppender">
<!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
<file value="logs\\Debug\\" />
<!-- 将日志信息追加到已有的日志文件中-->
<appendToFile value="true" />
<param name="MaxFileSize" value="10240"/>
<param name="MaxSizeRollBackups" value="100"/>
<!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!-- 指定按日期切分日志文件 -->
<rollingStyle value="Date" />
<!-- 日志文件的命名规则 -->
<!--<datePattern value="yyyyMMdd/yyyy-MM-dd_HH_mm_ss".log"" />-->
<datePattern value="yyyyMMdd/yyyy-MM-dd_HH".log"" />
<!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<!--<conversionPattern value="【日志时间】:%date【线程ID】:%thread%newline【日志级别】:%5level%newline%message%newline********************************************************************%newline" />-->
<conversionPattern value="【日志时间】:%date%newline【日志级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="Debug" />
<param name="LevelMax" value="Debug" />
</filter>
</appender>
<!-- Info 将日志以回滚文件的形式写到文件中 -->
<appender name="RollingFileInfo" type="log4net.Appender.RollingFileAppender">
<!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
<file value="logs\\Info\\" />
<!-- 将日志信息追加到已有的日志文件中-->
<appendToFile value="true" />
<param name="MaxFileSize" value="10240"/>
<param name="MaxSizeRollBackups" value="100"/>
<!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!-- 指定按日期切分日志文件 -->
<rollingStyle value="Date" />
<!-- 日志文件的命名规则 -->
<datePattern value="yyyyMMdd/yyyy-MM-dd_HH".log"" />
<!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="【日志时间】:%date%newline【日志级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="Info" />
<param name="LevelMax" value="Info" />
</filter>
</appender>
<!-- Warn 将日志以回滚文件的形式写到文件中 -->
<appender name="RollingFileWarn" type="log4net.Appender.RollingFileAppender">
<!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
<file value="logs\\Warn\\" />
<!-- 将日志信息追加到已有的日志文件中-->
<appendToFile value="true" />
<param name="MaxFileSize" value="10240"/>
<param name="MaxSizeRollBackups" value="100"/>
<!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!-- 指定按日期切分日志文件 -->
<rollingStyle value="Date" />
<!-- 日志文件的命名规则 -->
<datePattern value="yyyyMMdd/yyyy-MM-dd_HH".log"" />
<!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="【日志时间】:%date%newline【日志级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="Warn" />
<param name="LevelMax" value="Warn" />
</filter>
</appender>
<!-- Error 将日志以回滚文件的形式写到文件中 -->
<appender name="RollingFileError" type="log4net.Appender.RollingFileAppender">
<!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
<file value="logs\\Error\\" />
<!-- 将日志信息追加到已有的日志文件中-->
<appendToFile value="true" />
<param name="MaxFileSize" value="10240"/>
<param name="MaxSizeRollBackups" value="100"/>
<!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!-- 指定按日期切分日志文件 -->
<rollingStyle value="Date" />
<!-- 日志文件的命名规则 -->
<datePattern value="yyyyMMdd/yyyy-MM-dd_HH".log"" />
<!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="【日志时间】:%date%newline【日志级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="Error" />
<param name="LevelMax" value="Error" />
</filter>
</appender>
<!-- Fatal 将日志以回滚文件的形式写到文件中 -->
<appender name="RollingFileFatal" type="log4net.Appender.RollingFileAppender">
<!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->
<file value="logs\\Fatal\\" />
<!-- 将日志信息追加到已有的日志文件中-->
<appendToFile value="true" />
<param name="MaxFileSize" value="10240"/>
<param name="MaxSizeRollBackups" value="100"/>
<!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<!-- 指定按日期切分日志文件 -->
<rollingStyle value="Date" />
<!-- 日志文件的命名规则 -->
<datePattern value="yyyyMMdd/yyyy-MM-dd_HH".log"" />
<!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->
<staticLogFileName value="false" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="【日志时间】:%date%newline【日志级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<param name="LevelMin" value="Fatal" />
<param name="LevelMax" value="Fatal" />
</filter>
</appender>
<logger name="RollingLogFileAppender">
<level value="ALL" />
<appender-ref ref="RollingFileDebug" />
<appender-ref ref="RollingFileInfo" />
<appender-ref ref="RollingFileWarn" />
<appender-ref ref="RollingFileError" />
<appender-ref ref="RollingFileFatal" />
</logger>
<!--<root>
控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF
比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录
如果没有定义LEVEL的值,则缺省为DEBUG
<level value="ALL" />
按日期切分日志文件,并将日期作为日志文件的名字
<appender-ref ref="RollingFileAppenderNameByDate" />
</root>-->
</log4net>
</configuration>
3.日志帮助类
public class LogHelper
{
private static ILoggerRepository repository { get; set; }
private static ILog _log;
private static ILog log
{
get
{
if (_log == null)
{
Configure();
}
return _log;
}
}
public static void Configure(string repositoryName = "NETCoreRepository", string configFile = "log4net.config")
{
repository = LogManager.CreateRepository(repositoryName);
XmlConfigurator.Configure(repository, new FileInfo(configFile));
_log = LogManager.GetLogger(repositoryName, "RollingLogFileAppender");
}
public static void Info(string msg)
{
log.Info(msg);
}
public static void Warn(string msg)
{
log.Warn(msg);
}
public static void Error(string msg, Exception exception = null)
{
log.Error(msg, exception);
}
public static void Debug(string msg)
{
log.Debug(msg);
}
public static void Fatal(string msg)
{
log.Fatal(msg);
}
}
4.使用
LogHelper.Info("测试日志")