log4net的使用
1添加引用
2添加配置文件 log4net.xml
<?xml version="1.0" encoding="utf-8"?>
<log4net><appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"><layout type="log4net.Layout.PatternLayout"><conversionPattern value="%date [%thread] %-5level %logger %ndc - %message%newline" /></layout></appender><appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="INFO"><!--防止多线程时不能写Log,官方说线程非安全--><param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" /><param name="File" value="Logs/" /><param name="AppendToFile" value="true"/><param name="StaticLogFileName" value="false" /><param name="DatePattern" value="yyyy-MM-dd.'info.log'" /><param name="RollingStyle" value="Date"/><param name="MaxSizeRollBackups" value="10" /><param name="MaximumFileSize" value="5MB" /><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="## %d [%t] %-5p %x %m %n"/><!--<param name="ConversionPattern" value="%date [%thread] %-5level [%logger] %ndc - %message%newline" />--></layout><filter type="log4net.Filter.LevelRangeFilter"><param name="LevelMin" value="INFO" /><param name="LevelMax" value="INFO" /></filter></appender><appender name="ErrorFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="ERROR"><param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" /><param name="File" value="Logs/" /><param name="AppendToFile" value="true"/><param name="StaticLogFileName" value="false" /><param name="DatePattern" value="yyyy-MM-dd.'error.log'" /><param name="RollingStyle" value="Date"/><param name="MaxSizeRollBackups" value="10" /><param name="MaximumFileSize" value="5MB" /><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%date [%thread] %-5level [%logger] %ndc - %message%newline" /></layout><filter type="log4net.Filter.LevelRangeFilter"><param name="LevelMin" value="WARN" /><param name="LevelMax" value="ERROR" /></filter></appender><appender name="DebugFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="ERROR"><param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" /><param name="File" value="Logs/" /><param name="AppendToFile" value="true"/><param name="StaticLogFileName" value="false" /><param name="DatePattern" value="yyyy-MM-dd.'debug.log'" /><param name="RollingStyle" value="Date"/><param name="MaxSizeRollBackups" value="10" /><param name="MaximumFileSize" value="5MB" /><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%date [%thread] %-5level [%logger] %ndc - %message%newline" /></layout><filter type="log4net.Filter.LevelRangeFilter"><param name="LevelMin" value="DEBUG" /><param name="LevelMax" value="DEBUG" /></filter></appender><root><level value="All" /><appender-ref ref="LogFileAppender" /><appender-ref ref="ErrorFileAppender"/><appender-ref ref="DebugFileAppender" /><appender-ref ref="ConsoleAppender" /></root>
</log4net>
3 添加LogHelper类
using log4net;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace WindowsService1
{public static class LogHelper{public static void Info(object msg, params object[] parameters){var log = LogManager.GetLogger("log4netlogger");log.Info(msg);}public static void Debug(string msg){var log = LogManager.GetLogger("log4netlogger");log.Debug(msg);}public static void Error(string msg){var log = LogManager.GetLogger("log4netlogger");log.Error(msg);}public static void FormatError(string format, params object[] args){var log = LogManager.GetLogger("log4netlogger");log.Error(string.Format(format, args));}public static void Error(Exception ex){var log = LogManager.GetLogger("log4netlogger");log.Error(ex.Message, ex);}public static void Error(object msg, Exception ex){var log = LogManager.GetLogger("log4netlogger");log.Error(msg, ex);}public static void Warn(object msg, Exception ex){var log = LogManager.GetLogger("log4netlogger");log.Warn(msg, ex);}public static void Log(string msg){Info(msg);}public static void Log(Exception ex){Error(ex);}}
}
4使用
protected void Page_Load(object sender, EventArgs e){//加载log4net配置log4net.Config.XmlConfigurator.ConfigureAndWatch(new FileInfo(AppDomain.CurrentDomain.BaseDirectory + @"\log4net.xml"));try{LogHelper.Info("-----------1001CloudServer 停止运行!");}catch (Exception E) {LogHelper.Error(E.Message);}}
5根目录下会多出一个logs文件夹
.net8 webapi中的使用如下:
/// 1.webapi添加log4net和Microsoft.Extensions.Logging.Log4Net.AspNetCore
/// 2.加一个log4net.config
/// 3.Program.cs添加配置builder.Logging.AddLog4Net(“log4net.config”);
/// 4.加一个LogHelper.cs
/// 5.Controllers中使用
/// 6.bin\Debug\net8.0\logs下生成txt.
/// 7.看error看第一行是错误信息,哪个方法报的错看有行号的内容
/// 写入 WebApi3\myWebapi\bin\Debug\net8.0\logs
下面展示一些 内联代码片
。
//Program.cs加
builder.Logging.AddLog4Net("log4net.config");
//另外加一个帮助类
public class Log4Helper
{/// <summary>/// 1.webapi添加log4net和Microsoft.Extensions.Logging.Log4Net.AspNetCore/// 2.加一个log4net.config/// 3.Program.cs添加配置builder.Logging.AddLog4Net("log4net.config");/// 4.加一个LogHelper.cs/// 5.Controllers中使用/// 6.bin\Debug\net8.0\logs下生成txt./// 7.看error看第一行是错误信息,哪个方法报的错看有行号的内容/// 写入 WebApi3\myWebapi\bin\Debug\net8.0\logs/// </summary>/// <param name="msg"></param>public static void Error(string msg){var log = LogManager.GetLogger("log4netlogger");log.Error(msg);}public static void Info(string msg){var log = LogManager.GetLogger("log4netlogger");log.Info(msg);}
}
log4net.config
<?xml version="1.0" encoding="utf-8"?>
<log4net><appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="INFO"><!--防止多线程时不能写Log,官方说线程非安全--><param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" /><param name="File" value="Logs/info/" /><param name="AppendToFile" value="true"/><param name="StaticLogFileName" value="false" /><param name="DatePattern" value="yyyy-MM-dd.'info.log'" /><param name="RollingStyle" value="Date"/><param name="MaxSizeRollBackups" value="10" /><param name="MaximumFileSize" value="5MB" /><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%newline%date [%thread] %-5level [%logger] %method - %message" /></layout><filter type="log4net.Filter.LevelRangeFilter"><param name="LevelMin" value="INFO" /><param name="LevelMax" value="INFO" /></filter></appender><appender name="ErrorFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="ERROR"><param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" /><!--下面这行是内容放在哪里,Logs/error/是将txt放到logs文件夹下的error文件夹中--><param name="File" value="Logs/error/" /><param name="AppendToFile" value="true"/><param name="StaticLogFileName" value="false" /><param name="DatePattern" value="yyyy-MM-dd.'error.log'" /><param name="RollingStyle" value="Date"/><param name="MaxSizeRollBackups" value="10" /><param name="MaximumFileSize" value="5MB" /><layout type="log4net.Layout.PatternLayout"><!--下面这行是消息的内容模板--><param name="ConversionPattern" value="%newline%date [%thread] %-5level [%logger] %method - %message" /></layout><filter type="log4net.Filter.LevelRangeFilter"><param name="LevelMin" value="ERROR" /><param name="LevelMax" value="ERROR" /></filter></appender><appender name="DebugFileAppender" type="log4net.Appender.RollingFileAppender" LEVEL="ERROR"><param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" /><param name="File" value="Logs/debug/" /><param name="AppendToFile" value="true"/><param name="StaticLogFileName" value="false" /><param name="DatePattern" value="yyyy-MM-dd.'debug.log'" /><param name="RollingStyle" value="Date"/><param name="MaxSizeRollBackups" value="10" /><param name="MaximumFileSize" value="5MB" /><layout type="log4net.Layout.PatternLayout"><param name="ConversionPattern" value="%newline%date [%thread] %-5level [%logger] %ndc - %message" /></layout><filter type="log4net.Filter.LevelRangeFilter"><param name="LevelMin" value="DEBUG" /><param name="LevelMax" value="DEBUG" /></filter></appender><root><level value="All" /><appender-ref ref="LogFileAppender" /><appender-ref ref="ErrorFileAppender"/><appender-ref ref="DebugFileAppender" /><appender-ref ref="ConsoleAppender" /></root></log4net>