1、创建类库(例如CommonTools),引用log4net包,如下图:
2、写工具类(我这里是LogHelper,可自定义),代码如下:
using log4net;
using log4net.Config;
using log4net.Repository;
using System;
using System.IO;
namespace CommonTools.Log4net
{
public static class LogHelper
{
private static readonly ILoggerRepository Repository = LogManager.CreateRepository("NETCoreRepository");
private static readonly ILog Log = LogManager.GetLogger(Repository.Name, "NETCorelog4net");
/// <summary>
/// 构造方法
/// </summary>
static LogHelper()
{
XmlConfigurator.Configure(Repository, new FileInfo("log4net.config"));
}
/// <summary>
/// 写日志
/// </summary>
/// <param name="message"></param>
/// <param name="ex"></param>
public static void Info(string message)
{
Log.Info(message);
}
/// <summary>
/// 写错误日志
/// </summary>
/// <param name="message"></param>
/// <param name="ex"></param>
public static void Error(Exception ex, string message = null)
{
if (string.IsNullOrEmpty(message))
message = ex.Message;
Log.Error(message, ex);
}
/// <summary>
/// 写错误日志
/// </summary>
/// <param name="message"></param>
public static void Error(string message)
{
Log.Error(message);
}
}
}
3、在需要使用日志的应用项目的根目录添加log4net.config配置文件,如下:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections>
<log4net debug="false">
<appender name="info" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="C:\logfiles\log4net\info\" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="-1"/>
<param name="MaximumFileSize" value="5MB"/>
<param name="RollingStyle" value="Composite" />
<param name="DatePattern" value="yyyyMMdd\\HH".log"" />
<param name="StaticLogFileName" value="false" />
<param name="lockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout,log4net">
<!--%d, %date :表示当然的时间
%level : 表示日志的级别
%logger, %c:表示日志产生的主题,通常是所在的类名,便于定位问题
%m, %message :表示日志的具体内容
%n, %newline: 换行
-->
<param name="ConversionPattern" value="%n异常时间:%d [%t] %n异常级别:%-5p %n异 常 类:%c [%x] %n%m %n " />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="INFO" />
<levelMax value="INFO" />
</filter>
</appender>
<appender name="error" type="log4net.Appender.RollingFileAppender,log4net">
<param name="File" value="C:\logfiles\log4net\error\" />
<param name="AppendToFile" value="true" />
<param name="MaxSizeRollBackups" value="-1"/>
<param name="MaximumFileSize" value="5MB"/>
<param name="RollingStyle" value="Composite" />
<param name="DatePattern" value="yyyyMMdd\\HH".log"" />
<param name="StaticLogFileName" value="false" />
<param name="lockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout,log4net">
<param name="ConversionPattern" value="%n日志时间:%d [%t] %n日志级别:%-5p %n日 志 类:%c [%x] %n%m %n" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="ERROR" />
</filter>
</appender>
<root>
<level value="ALL"></level>
<appender-ref ref="info"/>
<appender-ref ref="error"/>
</root>
</log4net>
</configuration>
4、使用(例如在mvc中使用,引用类库CommonTools、添加log4net.config配置文件),代码如下:
using Microsoft.AspNetCore.Mvc;
using CommonTools.Log4net;
namespace Admin.Controllers
{
public class HomeController : BaseController
{
public ActionResult Index()
{
LogHelper.Error("123");
return View();
}
}
}
LogHelper.Error("123")即可,非常方便,在webapi、控制台程序等项目中一样通用。
5、我是把日志输出到C盘的logfiles文件夹下,如下图: