log4net.config配置文件
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,
log4net-net-1.0"/> </configSections> <log4net> <appender name="AppLog" type="log4net.Appender.RollingFileAppender"> <param name="File" value="SysLog/" /> <param name="AppendToFile" value="true" /> <param name="MaxSizeRollBackups" value="-1" /> <!--最小锁定模型以允许多个进程可以写入同一个文件--> <param name="lockingModel" type="log4net.Appender.FileAppender+MinimalLock" /> <param name="MaximumFileSize" value="10MB" /> <param name="RollingStyle" value="Size" /> <param name="DatePattern" value="yyyy-MM-dd" /> <param name="StaticLogFileName" value="true" /> <layout type="log4net.Layout.PatternLayout"> <param name="ConversionPattern" value="%-5p %d [%c] %m%n" /> </layout> </appender> <logger name="AppLog"> <level value="all" /> <appender-ref ref="AppLog" /> </logger> <root> <level value="all" /> </root> </log4net> </configuration>
log4net类
public class AppLog { private static string filepath = AppDomain.CurrentDomain.BaseDirectory + "SysLog/"; private static readonly log4net.ILog logComm = log4net.LogManager.GetLogger("AppLog"); static AppLog() { log4net.Config.XmlConfigurator.Configure(new FileInfo("log4net.config")); if (!Directory.Exists(filepath)) { Directory.CreateDirectory(filepath); } } private static readonly object o = new object(); /// <summary> /// 输出系统日志 /// </summary> /// <param name="msg">信息内容</param> /// <param name="source">信息来源</param> /// <param name="type">信息类型</param> private static void WriteLog(string msg, bool isWrite, Action<object> action, string type) { if (isWrite) { lock (o) { string filename = $"AppLog_{type}_{DateTime.Now.ToString("yyyyMMdd_HH")}.log"; var repository = LogManager.GetRepository(); #region MyRegion var appenders = repository.GetAppenders(); if (appenders.Length > 0) { RollingFileAppender? targetApder = null; foreach (var Apder in appenders) { if (Apder.Name == "AppLog") { targetApder = Apder as RollingFileAppender; break; } } if (targetApder != null && targetApder.Name == "AppLog")//如果是文件输出类型日志,则更改输出路径 { if (!targetApder.File.Contains(filename)) { targetApder.File = $"SysLog/{DateTime.Now.ToString("yyyy")}/{DateTime.Now.ToString("MM")}/{DateTime.Now.ToString("dd")}/{filename}"; targetApder.ActivateOptions(); } } } #endregion action(msg); //logComm.Error(msg + "\n"); } } } public static void WriteError(string msg, bool isWrite, string tag = "") { WriteLog(msg, isWrite, logComm.Error, "Error" + tag); } public static void WriteInfo(string msg, bool isWrite, string tag = "") { WriteLog(msg, isWrite, logComm.Info, "Info" + tag); } public static void WriteWarn(string msg, bool isWrite, string tag = "") { WriteLog(msg, isWrite, logComm.Warn, "Warn" + tag); } }
视频教程,点击进入B站可以看高清
本文来自 www.luofenming.com