分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 运营维护

用 Log4Net 三步实现 .Net Core 类库 分日志等级(不同文件目录)存日志

发布时间:2023-09-06 02:26责任编辑:郭大石关键词:类库

1,建立.Net Core  Web 项目,引入 log4net

2,建立类库,添加如下 helper方法

 ?1 using log4net; ?2 using log4net.Config; ?3 using System; ?4 using System.IO; ?5 ??6 namespace Chf.Log ?7 { ?8 ????/// <summary> ?9 ????/// Log4Net Helper 2018-12-16 19:15:00 ??10 ????/// 日志等级:OFF > FATAL > ERROR > WARN > INFO > DEBUG > ALL 11 ????/// </summary> 12 ????public sealed class LogHelper 13 ????{ ?14 ????????private static ILog logger; 15 ?16 ????????static LogHelper() 17 ????????{ 18 ????????????if (logger == null) 19 ????????????{ 20 ????????????????var repository = LogManager.CreateRepository("Chf.Web"); 21 ????????????????//指定配置文件 22 ????????????????XmlConfigurator.Configure(repository, new FileInfo("Config//log4netTwo.config")); 23 ????????????????logger = LogManager.GetLogger(repository.Name, "RollingLogFileAppender"); 24 ????????????} 25 ????????} 26 ?27 ????????/// <summary> 28 ????????/// 调试信息 29 ????????/// </summary> 30 ????????/// <param name="message"></param> 31 ????????/// <param name="exception"></param> 32 ????????public static void Debug(string message, Exception exception = null) 33 ????????{ 34 ????????????if (logger.IsDebugEnabled) 35 ????????????{ 36 ????????????????if (exception == null) 37 ????????????????????logger.Debug(message); 38 ????????????????else 39 ????????????????????logger.Debug(FormartLog(message, exception)); 40 ????????????} 41 ????????} 42 ?43 ????????/// <summary> 44 ????????/// 一般信息 45 ????????/// </summary> 46 ????????/// <param name="message"></param> 47 ????????/// <param name="exception"></param> 48 ????????public static void Info(string message, Exception exception = null) 49 ????????{ 50 ????????????if (logger.IsInfoEnabled) 51 ????????????{ ?52 ????????????????if (exception == null) 53 ????????????????????logger.Info(message); 54 ????????????????else 55 ????????????????????logger.Info(FormartLog(message, exception)); 56 ????????????} 57 ????????} 58 ?59 ????????/// <summary> 60 ????????/// 警告 61 ????????/// </summary> 62 ????????/// <param name="message"></param> 63 ????????/// <param name="exception"></param> 64 ????????public static void Warn(string message, Exception exception = null) 65 ????????{ ?66 ????????????if (logger.IsWarnEnabled) 67 ????????????{ 68 ????????????????if (exception == null) 69 ????????????????????logger.Warn(message); 70 ????????????????else 71 ????????????????????logger.Warn(FormartLog(message, exception)); 72 ????????????} 73 ????????} 74 ?75 ????????/// <summary> 76 ????????/// 一般错误 77 ????????/// </summary> 78 ????????/// <param name="message"></param> 79 ????????/// <param name="exception"></param> 80 ????????public static void Error(string message, Exception exception = null) 81 ????????{ 82 ????????????if (logger.IsErrorEnabled) 83 ????????????{ 84 ????????????????if (exception == null) 85 ????????????????????logger.Error(message); 86 ????????????????else 87 ????????????????????logger.Error(FormartLog(message, exception)); 88 ????????????} 89 ????????} 90 ?91 ????????/// <summary> 92 ????????/// 致命错误 93 ????????/// </summary> 94 ????????/// <param name="message"></param> 95 ????????/// <param name="exception"></param> 96 ????????public static void Fatal(string message, Exception exception = null) 97 ????????{ 98 ????????????if (logger.IsFatalEnabled) 99 ????????????{100 ????????????????if (exception == null)101 ????????????????????logger.Fatal(message);102 ????????????????else103 ????????????????????logger.Fatal(FormartLog(message, exception)); 104 ????????????}105 ????????}106 107 108 ????????/// <summary>109 ????????/// 自定义返回格式110 ????????/// </summary>111 ????????/// <param name="throwMsg"></param>112 ????????/// <param name="ex"></param>113 ????????/// <returns></returns>114 ????????private static string FormartLog(string throwMsg, Exception ex)115 ????????{116 ????????????return string.Format("【自定义内容】:{0} \r\n【异常类型】:{1} \r\n【异常信息】:{2} \r\n【堆栈调用】:{3}", new object[] { throwMsg, ex.GetType().Name, ex.Message, ex.StackTrace });117 ????????}118 ????}119 }
View Code

3,Web项目,添加如下配置文件

 ?1 <?xml version="1.0" encoding="utf-8"?> ?2 <configuration> ?3 ??<configSections> ?4 ????<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> ?5 ??</configSections> ?6 ??7 ??<log4net> ?8 ????<!-- Debug 将日志以回滚文件的形式写到文件中 --> ?9 ????<appender name="RollingFileDebug" type="log4net.Appender.RollingFileAppender"> 10 ??????<!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> 11 ??????<file value="Log\\Debug\\" /> 12 ??????<!-- 将日志信息追加到已有的日志文件中--> 13 ??????<appendToFile value="true" /> 14 ??????<param name="MaxFileSize" value="10240"/> 15 ??????<param name="MaxSizeRollBackups" value="100"/> 16 ??????<!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> 17 ??????<lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 18 ??????<!-- 指定按日期切分日志文件 --> 19 ??????<rollingStyle value="Date" /> 20 ??????<!-- 日志文件的命名规则 --> 21 ??????<datePattern value="yyyy-MM-dd_HH_mm_ss&quot;.log&quot;" /> 22 ??????<!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false --> 23 ??????<staticLogFileName value="false" /> 24 ??????<layout type="log4net.Layout.PatternLayout"> 25 ????????<conversionPattern value="【异常时间】:%date【线程ID】:%thread%newline【异常级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" /> 26 ??????</layout> 27 ??????<filter type="log4net.Filter.LevelRangeFilter"> 28 ????????<param name="LevelMin" value="Debug" /> 29 ????????<param name="LevelMax" value="Debug" /> 30 ??????</filter> 31 ????</appender> 32 ?33 ????<!-- Info 将日志以回滚文件的形式写到文件中 --> 34 ????<appender name="RollingFileInfo" type="log4net.Appender.RollingFileAppender"> 35 ??????<!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> 36 ??????<file value="Log\\Info\\" /> 37 ??????<!-- 将日志信息追加到已有的日志文件中--> 38 ??????<appendToFile value="true" /> 39 ??????<param name="MaxFileSize" value="10240"/> 40 ??????<param name="MaxSizeRollBackups" value="100"/> 41 ??????<!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> 42 ??????<lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 43 ??????<!-- 指定按日期切分日志文件 --> 44 ??????<rollingStyle value="Date" /> 45 ??????<!-- 日志文件的命名规则 --> 46 ??????<datePattern value="yyyy-MM-dd_HH_mm_ss&quot;.log&quot;" /> 47 ??????<!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false --> 48 ??????<staticLogFileName value="false" /> 49 ??????<layout type="log4net.Layout.PatternLayout"> 50 ????????<conversionPattern value="【异常时间】:%date【线程ID】:%thread%newline【异常级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" /> 51 ??????</layout> 52 ??????<filter type="log4net.Filter.LevelRangeFilter"> 53 ????????<param name="LevelMin" value="Info" /> 54 ????????<param name="LevelMax" value="Info" /> 55 ??????</filter> 56 ????</appender> 57 ?58 ????<!-- Warn 将日志以回滚文件的形式写到文件中 --> 59 ????<appender name="RollingFileWarn" type="log4net.Appender.RollingFileAppender"> 60 ??????<!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> 61 ??????<file value="Log\\Warn\\" /> 62 ??????<!-- 将日志信息追加到已有的日志文件中--> 63 ??????<appendToFile value="true" /> 64 ??????<param name="MaxFileSize" value="10240"/> 65 ??????<param name="MaxSizeRollBackups" value="100"/> 66 ??????<!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> 67 ??????<lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 68 ??????<!-- 指定按日期切分日志文件 --> 69 ??????<rollingStyle value="Date" /> 70 ??????<!-- 日志文件的命名规则 --> 71 ??????<datePattern value="yyyy-MM-dd_HH_mm_ss&quot;.log&quot;" /> 72 ??????<!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false --> 73 ??????<staticLogFileName value="false" /> 74 ??????<layout type="log4net.Layout.PatternLayout"> 75 ????????<conversionPattern value="【异常时间】:%date【线程ID】:%thread%newline【异常级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" /> 76 ??????</layout> 77 ??????<filter type="log4net.Filter.LevelRangeFilter"> 78 ????????<param name="LevelMin" value="Warn" /> 79 ????????<param name="LevelMax" value="Warn" /> 80 ??????</filter> 81 ????</appender> 82 ?83 ????<!-- Error 将日志以回滚文件的形式写到文件中 --> 84 ????<appender name="RollingFileError" type="log4net.Appender.RollingFileAppender"> 85 ??????<!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 --> 86 ??????<file value="Log\\Error\\" /> 87 ??????<!-- 将日志信息追加到已有的日志文件中--> 88 ??????<appendToFile value="true" /> 89 ??????<param name="MaxFileSize" value="10240"/> 90 ??????<param name="MaxSizeRollBackups" value="100"/> 91 ??????<!-- 最小锁定模式,以允许多个进程可以写入同一个文件 --> 92 ??????<lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 93 ??????<!-- 指定按日期切分日志文件 --> 94 ??????<rollingStyle value="Date" /> 95 ??????<!-- 日志文件的命名规则 --> 96 ??????<datePattern value="yyyy-MM-dd_HH_mm_ss&quot;.log&quot;" /> 97 ??????<!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false --> 98 ??????<staticLogFileName value="false" /> 99 ??????<layout type="log4net.Layout.PatternLayout">100 ????????<conversionPattern value="【异常时间】:%date【线程ID】:%thread%newline【异常级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />101 ??????</layout>102 ??????<filter type="log4net.Filter.LevelRangeFilter">103 ????????<param name="LevelMin" value="Error" />104 ????????<param name="LevelMax" value="Error" />105 ??????</filter>106 ????</appender>107 108 ????<!-- Fatal 将日志以回滚文件的形式写到文件中 -->109 ????<appender name="RollingFileFatal" type="log4net.Appender.RollingFileAppender">110 ??????<!-- 日志文件存放位置,可以为绝对路径也可以为相对路径 -->111 ??????<file value="Log\\Fatal\\" />112 ??????<!-- 将日志信息追加到已有的日志文件中-->113 ??????<appendToFile value="true" />114 ??????<param name="MaxFileSize" value="10240"/>115 ??????<param name="MaxSizeRollBackups" value="100"/>116 ??????<!-- 最小锁定模式,以允许多个进程可以写入同一个文件 -->117 ??????<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />118 ??????<!-- 指定按日期切分日志文件 -->119 ??????<rollingStyle value="Date" />120 ??????<!-- 日志文件的命名规则 -->121 ??????<datePattern value="yyyy-MM-dd_HH_mm_ss&quot;.log&quot;" />122 ??????<!-- 当将日期作为日志文件的名字时,必须将staticLogFileName的值设置为false -->123 ??????<staticLogFileName value="false" />124 ??????<layout type="log4net.Layout.PatternLayout">125 ????????<conversionPattern value="【异常时间】:%date【线程ID】:%thread%newline【异常级别】:%5level%newline%message%newline--------------------------------------------------------------------%newline" />126 ??????</layout>127 ??????<filter type="log4net.Filter.LevelRangeFilter">128 ????????<param name="LevelMin" value="Fatal" />129 ????????<param name="LevelMax" value="Fatal" />130 ??????</filter>131 ????</appender>132 133 ????<logger name="RollingLogFileAppender">134 ??????<level value="ALL" />135 ??????<appender-ref ref="RollingFileDebug" />136 ??????<appender-ref ref="RollingFileInfo" />137 ??????<appender-ref ref="RollingFileWarn" />138 ??????<appender-ref ref="RollingFileError" />139 ??????<appender-ref ref="RollingFileFatal" />140 ????</logger>141 142 ????<!--<root> 143 ????控制级别,由低到高:ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF ??144 ????比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录 ?145 ?????如果没有定义LEVEL的值,则缺省为DEBUG ?146 ??????<level value="ALL" /> 147 ???????按日期切分日志文件,并将日期作为日志文件的名字 ?148 ??????<appender-ref ref="RollingFileAppenderNameByDate" />149 ????</root>-->150 ??</log4net>151 </configuration>
View Code

4,运行项目,测试 除以0 和 直接写;就会看到如下

   

用 Log4Net 三步实现 .Net Core 类库 分日志等级(不同文件目录)存日志

原文地址:https://www.cnblogs.com/recordman/p/10128163.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved