zoukankan      html  css  js  c++  java
  • C#中使用log4net框架做日志输出

    一、用法

    1、引入包:https://www.nuget.org/packages/log4net/

    2、Main函数 

    using System;
    using System.IO;
    using log4net;
    using log4net.Config;
    
    namespace Log4NetDemo
    {
        class Program
        {
            static void Main(string[] args)
            {
                var repository = LogManager.CreateRepository("NETCoreRepository");
                XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
                var log = LogManager.GetLogger("NETCoreRepository", typeof(Program));
    
                log.Info("this is a info.");
                log.Error("this is an error:", new Exception("this is error."));
                log.Fatal("this is a fatal.");
                log.Warn("this is a warn");
                Console.WriteLine("finish.");
            }
        }
    }

      如果不想创建Repository的话,也可以写个工具类,统一在名称空间上备注完成。

    using log4net;
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    
    [assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", ConfigFileExtension = "config", Watch = false)]
    namespace MyProj.Utils.Log
    {
        public class LogUtils
        {
            private ILog log = LogManager.GetLogger(typeof(LogUtils));
    
            public void Debug(object message) => log.Debug(message);
            public void Debug(object message, Exception exception) => log.Debug(message, exception);
            public void DebugFormat(string format, params object[] args) => log.DebugFormat(format, args);
            public void DebugFormat(string format, object arg0) => log.DebugFormat(format, arg0);
            public void DebugFormat(string format, object arg0, object arg1, object arg2) => log.DebugFormat(format, arg0, arg1, arg2);
            public void DebugFormat(string format, object arg0, object arg1) => log.DebugFormat(format, arg0, arg1);
            public void Error(object message) => log.Error(message);
            public void Error(object message, Exception exception) => log.Error(message, exception);
            public void ErrorFormat(string format, object arg0, object arg1, object arg2) => log.ErrorFormat(format, arg0, arg1, arg2);
            public void ErrorFormat(string format, object arg0, object arg1) => log.ErrorFormat(format, arg0, arg1);
            public void ErrorFormat(string format, object arg0) => log.ErrorFormat(format, arg0);
            public void ErrorFormat(string format, params object[] args) => log.ErrorFormat(format, args);
            public void Fatal(object message) => log.Fatal(message);
            public void Fatal(object message, Exception exception) => log.Fatal(message, exception);
            public void FatalFormat(string format, object arg0, object arg1, object arg2) => log.FatalFormat(format, arg0, arg1, arg2);
            public void FatalFormat(string format, object arg0) => log.FatalFormat(format, arg0);
            public void FatalFormat(string format, params object[] args) => log.FatalFormat(format, args);
            public void FatalFormat(string format, object arg0, object arg1) => log.FatalFormat(format, arg0, arg1);
            public void Info(object message, Exception exception) => log.Info(message, exception);
            public void Info(object message) => log.Info(message);
            public void InfoFormat(string format, object arg0, object arg1, object arg2) => log.InfoFormat(format, arg0, arg1, arg2);
            public void InfoFormat(string format, object arg0, object arg1) => log.InfoFormat(format, arg0, arg1);
            public void InfoFormat(string format, object arg0) => log.InfoFormat(format, arg0);
            public void InfoFormat(string format, params object[] args) => log.InfoFormat(format, args);
            public void Warn(object message) => log.Warn(message);
            public void Warn(object message, Exception exception) => log.Warn(message, exception);
            public void WarnFormat(string format, object arg0, object arg1) => log.WarnFormat(format, arg0, arg1);
            public void WarnFormat(string format, object arg0) => log.WarnFormat(format, arg0);
            public void WarnFormat(string format, params object[] args) => log.WarnFormat(format, args);
            public void WarnFormat(string format, object arg0, object arg1, object arg2) => log.WarnFormat(format, arg0, arg1, arg2);
        }
    }

    3、新建一个log4net.config配置文件,并设置输出到程序目录下。

    <?xml version="1.0" encoding="UTF-8"?>
    
    <configuration status="ON">
        <log4net>
            <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
                <layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline" />
            </appender>
            <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
                <file value="logs/" />
                <appendToFile value="true" />
                <rollingStyle value="Composite" />
                <staticLogFileName value="false" />
                <datePattern value="yyyyMMdd'.log'" />
                <maxSizeRollBackups value="10" />
                <maximumFileSize value="1MB" />
                <layout type="log4net.Layout.PatternLayout">
                    <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
                </layout>
            </appender>
            <root level="ALL">
                <appender-ref ref="ConsoleAppender" />
                <appender-ref ref="RollingLogFileAppender" />
            </root>
        </log4net>
    </configuration>

    4、效果:

  • 相关阅读:
    return
    debug_backtrace final catch
    Exponential Backoff
    2014 MapReduce
    Extract, Transform, Load
    Factorization of a 768-bit RSA modulus
    奇偶校验 汉明码 如果一条信息中包含更多用于纠错的位,且通过妥善安排这些纠错位使得不同的出错位产生不同的错误结果,那么我们就可以找出出错位了。 crc CRC 循环冗余校验
    An Explanation of the Deflate Algorithm
    通过极限手续定义正数的无理指数方幂
    算术根的存在唯一性
  • 原文地址:https://www.cnblogs.com/songxingzhu/p/9022435.html
Copyright © 2011-2022 走看看