1、NuGet安装Log4Net
2、创建LogHelper帮助类
using log4net;
using log4net.Config;
using log4net.Repository;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
namespace netCore5Log4NetTest
{
public class LogHelper
{
private static ILoggerRepository repository { get; set; }
private static ILog _Loginfo;
private static ILog _Logerror;
private static ILog LogInfo
{
get
{
if (_Loginfo == null)
{
Configure();
}
return _Loginfo;
}
}
private static ILog LogError
{
get
{
if (_Logerror == null)
{
Configure();
}
return _Logerror;
}
}
public static void Configure(string repositoryName = "NETCoreRepository", string configFile = "log4net.config")
{
repository = LogManager.CreateRepository(repositoryName);
XmlConfigurator.Configure(repository, new FileInfo(configFile));
_Logerror = LogManager.GetLogger(repositoryName, "logerror");
_Loginfo = LogManager.GetLogger(repositoryName, "loginfo");
}
public static void Info(string msg)
{
LogInfo.Info(msg);
}
public static void Warn(string msg)
{
LogInfo.Warn(msg);
}
public static void Error(string msg)
{
LogError.Error(msg);
}
public static void Info(object ex)
{
LogInfo.Info(ex);
}
public static void Debug(object message, Exception ex)
{
LogInfo.Debug(message, ex);
}
public static void Warn(object message, Exception ex)
{
LogInfo.Warn(message, ex);
}
public static void Error(object message, Exception ex)
{
LogError.Error(message, ex);
}
public static void LogErrorInfo(Exception ex, object message)
{
LogError.Error(message, ex);
}
public static void Info(object message, Exception ex)
{
LogInfo.Info(message, ex);
}
}
}
3、创建Log4Net 配置文件log4net.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- This section contains the log4net configuration settings -->
<log4net>
<logger name="logerror">
<level value="ALL" />
<appender-ref ref="ErrorAppender" />
</logger>
<!--信息日志类-->
<logger name="loginfo">
<level value="ALL" />
<appender-ref ref="InfoAppender" />
</logger>
<appender name="InfoAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogInfo\\" />
<param name="AppendToFile" value="true" />
<!--保证多个日志文件后缀名:log.1.htm-->
<param name="PreserveLogFileNameExtension" value="true" />
<!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
<param name="MaxSizeRollBackups" value="-1" />
<!--每个文件的大小。只在混合方式与文件大小方式下使用。超出大小后在所有文件名后自动增加正整数重新命名,数字最大的最早写入。可用的单位:KB|MB|GB。不要使用小数,否则会一直写入当前日志-->
<param name="MaximumFileSize" value="100MB" />
<!--计数类型为1,2,3…-->
<!--<param name="CountDirection" value="1"/>-->
<!--是否只写到一个文件中-->
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd".htm"" />
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<param name="RollingStyle" value="Composite" />
<!-- 信息日志布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=blue>%n日志时间:%d [%t] <BR>%n日志级别:%-5p <BR>%n日 志 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender>
<appender name="ErrorAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="Log\\LogError\\" />
<param name="AppendToFile" value="true" />
<!--保证多个日志文件后缀名:log.1.htm-->
<param name="PreserveLogFileNameExtension" value="true" />
<!--最多产生的日志文件数,超过则只保留最新的n个。设定值value="-1"为不限文件数-->
<param name="MaxSizeRollBackups" value="-1" />
<!--每个文件的大小。只在混合方式与文件大小方式下使用。超出大小后在所有文件名后自动增加正整数重新命名,数字最大的最早写入。可用的单位:KB|MB|GB。不要使用小数,否则会一直写入当前日志-->
<param name="MaximumFileSize" value="100MB" />
<!--是否只写到一个文件中-->
<param name="StaticLogFileName" value="false" />
<param name="DatePattern" value="yyyyMMdd".htm"" />
<!--按照何种方式产生多个日志文件(日期[Date],文件大小[Size],混合[Composite])-->
<param name="RollingStyle" value="Composite" />
<!--布局-->
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="<HR COLOR=red>%n异常时间:%d [%t] <BR>%n异常级别:%-5p <BR>%n异 常 类:%c [%x] <BR>%n%m <BR>%n <HR Size=1>" />
</layout>
</appender>
</log4net>
</configuration>
4、最后一步初始化日志配置
然后就不用所有地方依赖注入了,可以全局使用。