c#控制台应用添加Log4net日志(控制台和文件)

c#控制台应用添加Log4net日志(控制台和文件),第1张

目录
  • Log4net入门(简要介绍)
  • 1 使用Visual Studio创建一个控制台应用
  • 2 在Nuget中下载log4net
  • 3.增加App.config(app.config)配置文件
  • 4 增加工具类和默认配置
  • 5 测试

Log4net入门(简要介绍)

Log4net是Apache公司的log4j™的.NET版本,用于帮助.NET开发人员将日志信息输出到各种不同的输出源(Appender),常见的输出源包括控制台、日志文件和数据库等。本篇主要讨论如何在控制台应用程序中将日志文件输出到控制台、日志文件和SQL Server数据库中。

1 使用Visual Studio创建一个控制台应用 2 在Nuget中下载log4net

3.增加App.config(app.config)配置文件


注意,一定要叫App.config或者app.config,不然程序识别不到
具体的配置可以查看资料,:



<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
    configSections>
    
    <log4net>
        <root>
            
            
            
            <level value="ALL" />
            
            <appender-ref ref="RollingFileAppender" />
            
            <appender-ref ref="ConsoleAppender" />
        root>

        
        <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
            
            <file value="Log/" />
            
            <appendToFile value="true" />
            
            <RollingStyle value="Composite" />
            
            <MaxSizeRollBackups value="-1" />
            
            <datePattern value="yyyy-MM"/"yyyyMMdd".txt"" />
            <staticLogFileName value="false" />
            
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
            
            <maximumFileSize value="2MB" />
            
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date [%t]%-5p %c - %m%n" />
            layout>
        appender>
        
        
        <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
            layout>
        appender>

    log4net>


configuration>
4 增加工具类和默认配置

新建Logger.cs

using System.Diagnostics;
using log4net.Config;
using System.Reflection;
using System.Text;
using log4net;


namespace ConsoleApp1
{
    public class Logger
    {
        Logger(ILog log)
        {
            this._log = log;
        }

        private readonly log4net.ILog _log;
        
        // 静态代码块
        static Logger()
        {
            Console.WriteLine("初始化日志配置完成");
            XmlConfigurator.Configure();
        }

        // 静态工具方法
        public static Logger GetLogger(Type? type)
        {
            // log4net.LogManager.GetLogger(Type type)
            // - type:System.Reflection.MethodBase.GetCurrentMethod()?.DeclaringType
            // - 含义是自动获取使用该日志的类名,然后打印显示或者存在文件内,比如名为Test.cs的类使用了日志功能,那么获取到的就是Test
            //   2022-04-21 17:09:52,836 [1] ERROR Test - a
            log4net.ILog log = log4net.LogManager.GetLogger(type);
            Logger logger = new Logger(log);
            return logger;
        }

       
        /// 
        /// 输出信息日志
        /// 
        /// 消息
        public void info(string message)
        {
            if (_log.IsInfoEnabled)
            {
                _log.Info(message);
            }
        }

        /// 
        /// 输出调试日志
        /// 
        /// 调试信息
        public void debug(string message)
        {
            if (_log.IsDebugEnabled)
            {
                _log.Debug(message);
            }
        }

        /// 
        /// 输出调试日志
        /// 
        /// 异常信息
        public void debug(Exception ex)
        {
            if (_log.IsDebugEnabled)
            {
                _log.Debug(ex.Message + "/r/n" + ex.Source + "/r/n" +
                          ex.TargetSite + "/r/n" + ex.StackTrace);
            }
        }

        /// 
        /// 输出错误日志
        /// 
        /// 消息
        /// 错误信息
        public void error(string message)
        {
            if (_log.IsErrorEnabled)
            {
                _log.Error(message);
            }
        }

        /// 
        /// 输出错误日志
        /// 
        /// 错误信息
        public  void error(Exception ex)
        {
            if (_log.IsErrorEnabled)
            {
                _log.Error(ex.Message, ex);
            }
        }

        /// 
        /// 输出错误日志
        /// 
        /// 消息
        /// 错误信息
        public  void error(string message, Exception ex)
        {
            if (_log.IsErrorEnabled)
            {
                _log.Error(message, ex);
            }
        }
    }
}
5 测试

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/720973.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存