IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> c#控制台应用添加Log4net日志(控制台和文件) -> 正文阅读

[Java知识库]c#控制台应用添加Log4net日志(控制台和文件)

Log4net入门(简要介绍)

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

1 使用Visual Studio创建一个控制台应用

2 在Nuget中下载log4net

在这里插入图片描述

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

在这里插入图片描述
注意,一定要叫App.config或者app.config,不然程序识别不到
具体的配置可以查看资料,:

<?xml version="1.0"?>

<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net" />
    </configSections>
    <!-- 日志配置部分 -->
    <log4net>
        <root>
            <!--控制级别,由低到高: ALL|DEBUG|INFO|WARN|ERROR|FATAL|OFF-->
            <!--比如定义级别为INFO,则INFO级别向下的级别,比如DEBUG日志将不会被记录-->
            <!--如果没有定义LEVEL的值,则缺省为DEBUG-->
            <level value="ALL" />
            <!--输出到文件-->
            <appender-ref ref="RollingFileAppender" />
            <!--输出到控制台-->
            <appender-ref ref="ConsoleAppender" />
        </root>

        <!--输出到文件设置-->
        <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender">
            <!--日志文件存放位置,在debug文件夹下的log文件夹下-->
            <file value="Log/" />
            <!--是否追加到文件,默认为true,通常无需设置-->
            <appendToFile value="true" />
            <!--这种情况下MaxSizeRollBackups和maximumFileSize的节点设置才有意义-->
            <RollingStyle value="Composite" />
            <!--每天记录的日志文件个数,与maximumFileSize配合使用-->
            <MaxSizeRollBackups value="-1" />
            <!--日期的格式,每天生成一个文件,每月会生成一个文件夹,存放当月的文件日志-->
            <datePattern value="yyyy-MM&quot;/&quot;yyyyMMdd&quot;.txt&quot;" />
            <staticLogFileName value="false" />
            <!--多线程时采用最小锁定-->
            <lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
            <!--每个日志文件的大小,可用的单位:KB|MB|GB-->
            <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;
        }

       
        /// <summary>
        /// 输出信息日志
        /// </summary>
        /// <param name="message">消息</param>
        public void info(string message)
        {
            if (_log.IsInfoEnabled)
            {
                _log.Info(message);
            }
        }

        /// <summary>
        /// 输出调试日志
        /// </summary>
        /// <param name="message">调试信息</param>
        public void debug(string message)
        {
            if (_log.IsDebugEnabled)
            {
                _log.Debug(message);
            }
        }

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

        /// <summary>
        /// 输出错误日志
        /// </summary>
        /// <param name="message">消息</param>
        /// <param name="ex">错误信息</param>
        public void error(string message)
        {
            if (_log.IsErrorEnabled)
            {
                _log.Error(message);
            }
        }

        /// <summary>
        /// 输出错误日志
        /// </summary>
        /// <param name="ex">错误信息</param>
        public  void error(Exception ex)
        {
            if (_log.IsErrorEnabled)
            {
                _log.Error(ex.Message, ex);
            }
        }

        /// <summary>
        /// 输出错误日志
        /// </summary>
        /// <param name="message">消息</param>
        /// <param name="ex">错误信息</param>
        public  void error(string message, Exception ex)
        {
            if (_log.IsErrorEnabled)
            {
                _log.Error(message, ex);
            }
        }
    }
}

5 测试

在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-04-24 09:15:04  更:2022-04-24 09:20:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 3:06:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码