引用dll :  log4net.dll

 

接口类:ILogger.cs
using System; using System.Collections.Generic; using System.Linq; using
System.Text; namespace HCCD.Base.Comm.NewLogger { /// <summary> /// 日志接口 ///
</summary> public interface ILogger { /// <summary> /// 调试日志输出 /// </summary>
/// <param name="msg">输出内容</param> void Debug(string msg); /// <summary> ///
调试日志输出 /// </summary> /// <param name="msg">输出内容</param> /// <param
name="ex">输出异常</param> void Debug(string msg, Exception ex); /// <summary> ///
信息日志输出 /// </summary> /// <param name="msg">输出内容</param> void Info(string msg);
/// <summary> /// 信息日志输出 /// </summary> /// <param name="msg">输出内容</param> ///
<param name="ex">输出异常</param> void Info(string msg, Exception ex); ///
<summary> /// 警告日志输出 /// </summary> /// <param name="msg">输出内容</param> void
Warn(string msg); /// <summary> /// 警告日志输出 /// </summary> /// <param
name="msg">输出内容</param> /// <param name="ex">输出异常</param> void Warn(string msg,
Exception ex); /// <summary> /// 错误日志输出 /// </summary> /// <param
name="msg">输出内容</param> void Error(string msg); /// <summary> /// 错误日志输出 ///
</summary> /// <param name="msg">输出内容</param> /// <param name="ex">输出异常</param>
void Error(string msg, Exception ex); /// <summary> /// 致命日志输出 /// </summary>
/// <param name="msg">输出内容</param> void Fatal(string msg); /// <summary> ///
致命日志输出 /// </summary> /// <param name="msg">输出内容</param> /// <param
name="ex">输出异常</param> void Fatal(string msg, Exception ex); } }
接口实现类:LogHelper.cs
using System; using System.Collections.Generic; using System.Linq; using
System.Text; using log4net; using log4net.Appender; using System.IO; using
log4net.Config; namespace HCCD.Base.Comm.NewLogger { /* * Author: Long * Date:
2019-09 * Detail: Log4net日志类 */ /// <summary> /// Log4net日志类 /// </summary>
public class LogHelper : ILogger { private Dictionary<string, ILog> LogDic =
new Dictionary<string, ILog>(); private object _islock = new object(); private
string fileName = string.Empty; /// <summary> /// 日志调用初始化 /// </summary> ///
<param name="fileSavePath">日志文件保存路径[若路径为空,则默认程序根目录Logger文件夹;]</param> ///
<param name="fileName">日志文件名[若文件名为空,则默认文件名:Default]</param> public
LogHelper(string fileSavePath, string fileName,string logSuffix = ".log") { try
{ Init(); if (string.IsNullOrEmpty(fileSavePath)) fileSavePath = "Logger"; if
(string.IsNullOrEmpty(fileName)) fileName = "Default"; this.fileName =
fileName; var repository = LogManager.GetRepository(); var appenders =
repository.GetAppenders(); if (appenders.Length == 0) return; var targetApder =
appenders.First(p => p.Name == "FileInfoAppender") as RollingFileAppender;
targetApder.File = Path.Combine(fileSavePath, this.fileName + logSuffix);
targetApder.ActivateOptions(); } catch (Exception ex) { } } /// <summary> ///
缓存日志对象 /// </summary> /// <param name="name"></param> /// <returns></returns>
private ILog GetLog(string name) { try { if (LogDic == null) { LogDic = new
Dictionary<string, ILog>(); } lock (_islock) { if (!LogDic.ContainsKey(name)) {
LogDic.Add(name, LogManager.GetLogger(name)); } } return LogDic[name]; } catch
{ return LogManager.GetLogger("Default"); } } /// <summary> /// 日志记录初始化 ///
</summary> private void Init() { var file = new
FileInfo(Path.Combine(AppDomain.CurrentDomain.BaseDirectory,
"Log4net.config")); XmlConfigurator.Configure(file); } /// <summary> /// 调试日志输出
/// </summary> /// <param name="msg">输出内容</param> public void Debug(string msg)
{ var log = GetLog(this.fileName); if (log == null) { return; } log.Debug(msg);
} /// <summary> /// 调试日志输出 /// </summary> /// <param name="msg">输出内容</param>
/// <param name="ex">输出异常</param> public void Debug(string msg, Exception ex) {
var log = GetLog(this.fileName); if (log == null) { return; } log.Debug(msg,
ex); } /// <summary> /// 信息日志输出 /// </summary> /// <param
name="msg">输出内容</param> public void Info(string msg) { var log =
GetLog(this.fileName); if (log == null) { return; } log.Info(msg); } ///
<summary> /// 信息日志输出 /// </summary> /// <param name="msg">输出内容</param> ///
<param name="ex">输出异常</param> public void Info(string msg, Exception ex) { var
log = GetLog(this.fileName); if (log == null) { return; } log.Info(msg, ex); }
/// <summary> /// 警告日志输出 /// </summary> /// <param name="msg">输出内容</param>
public void Warn(string msg) { var log = GetLog(this.fileName); if (log ==
null) { return; } log.Warn(msg); } /// <summary> /// 警告日志输出 /// </summary> ///
<param name="msg">输出内容</param> /// <param name="ex">输出异常</param> public void
Warn(string msg, Exception ex) { var log = GetLog(this.fileName); if (log ==
null) { return; } log.Warn(msg, ex); } /// <summary> /// 错误日志输出 /// </summary>
/// <param name="msg">输出内容</param> public void Error(string msg) { var log =
GetLog(this.fileName); if (log == null) { return; } log.Error(msg); } ///
<summary> /// 错误日志输出 /// </summary> /// <param name="msg">输出内容</param> ///
<param name="ex">输出异常</param> public void Error(string msg, Exception ex) { var
log = GetLog(this.fileName); if (log == null) { return; } log.Error(msg, ex); }
/// <summary> /// 致命日志输出 /// </summary> /// <param name="msg">输出内容</param>
public void Fatal(string msg) { var log = GetLog(this.fileName); if (log ==
null) { return; } log.Fatal(msg); } /// <summary> /// 致命日志输出 /// </summary> ///
<param name="msg">输出内容</param> /// <param name="ex">输出异常</param> public void
Fatal(string msg, Exception ex) { var log = GetLog(this.fileName); if (log ==
null) { return; } log.Fatal(msg, ex); } } }
配置类:Log4net.config
<?xml version="1.0"?> <configuration> <configSections> <section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
</configSections> <!--站点日志配置部分--> <log4net> <!-- OFF, FATAL, ERROR, WARN, INFO,
DEBUG, ALL --> <!-- Set root logger level to ERROR and its appenders --> <root>
<!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
<!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录--> <!--如果没有定义LEVEL的值,则缺省为DEBUG-->
<level value="ALL"/> <appender-ref ref="FileInfoAppender"/> </root> <appender
name="FileInfoAppender" type="log4net.Appender.RollingFileAppender">
<!--多线程时采用最小锁定--> <lockingModel
type="log4net.Appender.FileAppender+MinimalLock"/> <file/> <param
name="AppendToFile" value="true"/> <param name="RollingStyle" value="Date"/>
<datePattern value=""."yyyy-MM-dd".log""/> <!--固定文件名-->
<param name="StaticLogFileName" value="true"/> <encoding value="utf-8"/>
<!--日志输出格式--> <layout type="log4net.Layout.PatternLayout,log4net"> <param
name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss} [%p] %m%n"/> </layout>
</appender> </log4net> </configuration>
 

 

调用方式

引用:log4net.dll 

           HCC.Base.Comm.NewLogger.dll

实现:
using System; using System.Collections.Generic; using System.Linq; using
System.Text; using HCC.Base.Comm.NewLogger; namespace ConsoleApplication1 {
class Program { static void Main(string[] args) { LogHelper log = new
LogHelper(@"D:\Logger", "stydy"); log.Info("广东省个大三噶的首付打好分单发核辐射的");
log.Info("广东省个大三噶的首付打好分单发核辐射的", new Exception("请检查系统异常!这个问题是相当的严重。"));
log.Fatal("gdsgdsgdsgdsgdsgds"); log.Fatal("gdsgdsgdsgdsgdsgds", new
Exception("请检查系统异常!这个问题是相当的严重。")); log.Warn("广东省个大三噶电视柜电视柜");
log.Warn("gdsgdsgdsgdsgdsgds", new Exception("请检查系统异常!这个问题是相当的严重。"));
log.Debug("cbvcbvfgsfgdsgdsgdsgdsgdsgds"); log.Debug("gdsgdsgdsgdsgdsgds", new
Exception("请检查系统异常!这个问题是相当的严重。")); log.Error("系统异常"); log.Error("系统异常",new
Exception("请检查系统异常!这个问题是相当的严重。")); } } }
 

技术
©2020 ioDraw All rights reserved
PTA快速排序SK海力士全球首发DDR5内存:频率冲上5600MHz、容量可达256GB鸿蒙系统基于Linux打造,其本质还是安卓系统?LeetCode快速入门① ——数组系列上(面试常问,建议收藏)特征工程【评论】华为的鸿蒙系统会开源吗?ETL工具kettle与datax的对比测试案例之Oracle to Oraclespark.sql.shuffle.partitions 和 spark.default.parallelism 的区别华为鸿蒙系统能否与安卓、苹果分庭抗礼?centos7部署springboot jar包