Log4net 根据日志类型输出日志

第一步:引入Log4net.dll 文件的引用

第二步:添加LogHelper类,代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using log4net;

namespace DemoLog4net
{
    /// <summary>
    /// 日志等级
    /// </summary>
    public enum LogLevel
    {
        Error,
        Debug,
        Warning,
        Info
    }
   /// <summary>
   /// 日志类型
   /// </summary>
    public enum LogType
    {
        AppLog,
        ErrorLog,
        DebugLog,
        OtherLog
    }
    /// <summary>
    /// 单例模式初始化
    /// </summary>
    public class Singleton
    {
        private ILog Log;
        private static Singleton instance;
        private Singleton() { }
        public static Singleton getInstance()
        {
            if (instance == null)
            {
                instance = new Singleton();
            }
            return instance;
        }
        /// <summary>
        /// 获取日志初始化器
        /// </summary>
        /// <param name="logType"></param>
        /// <returns></returns>
        public ILog Init(LogType logType)
        {
            string s = logType.ToString();
            Log = LogManager.GetLogger(s);
            return Log;
        }
    }
    /// <summary>
    /// 日志操作类
    /// </summary>
    public class LogHelper
    {
        /// <summary>
        /// 输出Erro日志
        /// </summary>
        /// <param name="logType"></param>
        /// <param name="message"></param>
        public static void Error(LogType logType, string message)
        {
            WriteLog(logType, LogLevel.Error, message);
        }
        /// <summary>
        /// 输出Warning日志
        /// </summary>
        /// <param name="logType"></param>
        /// <param name="message"></param>
        public static void Warning(LogType logType, string message)
        {
            //记录日志
            WriteLog(logType, LogLevel.Warning, message);
        }
        /// <summary>
        /// 输出Info日志
        /// </summary>
        /// <param name="logType"></param>
        /// <param name="message"></param>
        public static void Info(LogType logType, string message)
        {
            //记录日志
            WriteLog(logType, LogLevel.Info, message);
        }
        public static void Debug(LogType logType, string message)
        {
            //记录日志
            WriteLog(logType, LogLevel.Debug, message);
        }
        /// <summary>
        /// 写日志
        /// </summary>
        /// <param name="logType"></param>
        /// <param name="logLevel"></param>
        /// <param name="message"></param>
        private static void WriteLog(LogType logType, LogLevel logLevel, string message)
        {
            ILog Log = Singleton.getInstance().Init(logType);
            switch (logLevel)
            {
                case LogLevel.Debug:
                    Log.Debug(message);
                    break;
                case LogLevel.Error:
                    Log.Error(message);
                    break;
                case LogLevel.Info:
                    Log.Info(message);
                    break;
                case LogLevel.Warning:
                    Log.Warn(message);
                    break;
            }

        }
    }
}

第三步:添加配置文件Log4net.config文件 ,记得将此文件的【复制到输出目录 】设置复制

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <configSections>
    <section name="log4net" type="System.Configuration.IgnoreSectionHandler"/>
  </configSections>
  <appSettings>
  </appSettings>
  <log4net>
    <!--一般信息日志-->
    <appender name="AppLog" type="log4net.Appender.RollingFileAppender">
      <file value="Log/AppLog/" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <staticLogFileName value="false" />
      <datePattern value="yyyyMMdd&quot;.log&quot;" />
      <layout type="log4net.Layout.PatternLayout">
        <!--输出格式-->
        <conversionPattern value="%date %-5level %message%newline" />
      </layout>
      <filter type="log4net.Filter.LoggerMatchFilter">
        <loggerToMatch value="AppLog" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
    </appender>
    <!--严重错误日志-->
    <appender name="ErrorLog" type="log4net.Appender.RollingFileAppender">
      <file value="Log/ErrorLog/" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <staticLogFileName value="false" />
      <datePattern value="yyyyMMdd&quot;.log&quot;" />
      <layout type="log4net.Layout.PatternLayout">
        <!--输出格式-->
        <conversionPattern value="%date %-5level %message%newline" />
      </layout>
      <filter type="log4net.Filter.LoggerMatchFilter">
        <loggerToMatch value="ErrorLog" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
    </appender>
    <!--调试日志-->
    <appender name="DebugLog" type="log4net.Appender.RollingFileAppender">
      <file value="Log/DebugLog/" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <staticLogFileName value="false" />
      <datePattern value="yyyyMMdd&quot;.log&quot;" />
      <layout type="log4net.Layout.PatternLayout">
        <!--输出格式-->
        <conversionPattern value="%date %-5level %message%newline" />
      </layout>
      <filter type="log4net.Filter.LoggerMatchFilter">
        <loggerToMatch value="DebugLog" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
    </appender>

    <!--其他信息日志-->
    <appender name="OtherLog" type="log4net.Appender.RollingFileAppender">
      <file value="Log/OtherLog/" />
      <appendToFile value="true" />
      <rollingStyle value="Date" />
      <staticLogFileName value="false" />
      <datePattern value="yyyyMMdd&quot;.log&quot;" />
      <layout type="log4net.Layout.PatternLayout">
        <!--输出格式-->
        <conversionPattern value="%date %-5level %message%newline" />
      </layout>
      <filter type="log4net.Filter.LoggerMatchFilter">
        <loggerToMatch value="OtherLog" />
      </filter>
      <filter type="log4net.Filter.DenyAllFilter" />
    </appender>
    <root>
      <level value="ALL"/>
      <appender-ref ref="AppLog"/>
      <appender-ref ref="ErrorLog"/>
      <appender-ref ref="DebugLog"/>
      <appender-ref ref="OtherLog"/>
    </root>
  </log4net>
</configuration>

第五步:在AssemblyInfo.cs文件中添加

[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net_dcs.config", Watch = true)]

时间: 2024-11-10 19:38:13

Log4net 根据日志类型输出日志的相关文章

log4net的分类型输出文件的配置

<?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/> </configSections> &l

Spring Boot 使用 Log4j2 &amp; Logback 输出日志到 EKL

文章目录 1.ELK 介绍 2.环境.软件准备 3.ELK 环境搭建 4.Spring Boot 配置示例 4.1.Log4j2 方式配置 4.2.Logback 方式配置 1.ELK 介绍 ELK 是 Elasticsearch , Logstash, Kibana 的缩写,Elasticsearch 是开源分布式搜索引擎,提供搜集.分析.存储数据等功能,Logstash 主要是用来日志的搜集.分析.过滤日志的工具,Kibana 为 Elasticsearch 提供分析和可视化的 Web 平台

Mysql常用日志类型及场景。

日志相关的常见问题: 1.mysql常用日志有哪些?我们在什么情况下使用这些日志? 2.如何通过日志类审计用户活动? 通过插件实现,mysql GPL版没有审计日志.percona mysql有审计日志功能. (1)常用日志类型 错误日志(error-log):记录mysql在启动.运行和停止时出现的问题诊断分析. 常规日志(general_log):记录所有mysql客户端发向mysql服务器的请求.包括连接请求.数据库操作请求以及一些管理命令,无论请求是否成功都会记录在这个日志中,可想如果是

【转】kettle 的内存设置及输出日志的时间类型

本文转载自:http://blog.csdn.net/dqswuyundong/archive/2010/10/19/5952004.aspx 设置kettle的内存 REM ******************************************************************REM ** Set java runtime options                                     **REM ** Change 256m to high

使用log4net将日志文件输出为csv格式

我们在编写程序时,会在程序运行过程中记录一些日志.log4net作为一款经久耐用的日志组件,值得我们信赖.在中小型公司中,往往没有专业的日志服务器来处理应用程序产生的日志,而格式化不好的日志文件又为上线后日志的统计.分析.查找造成了困难. Excel作为一款常用的办公软件,用来处理一些中小数量级的数据还是游刃有余的.如果log4net输出的日志能够直接导入Excel,那么查询和分析起来岂不是要快很多? 我们有很多方法可以实现这个功能,csv的优势是其文件格式比较简单,可以用任意的文本编辑器打开,

log4net 按时间输出日志

参考:(转)非常完善的Log4net详细说明 log4net 按天与按小时记日志的配置 Log4net 中输出日志到文件,文件名根据日期生成 log4net按日志级别(debug,info,warn,error,fatal)生成日志目录,同时每小时生成一个日志文件 配置文件: <?xml version="1.0"?> <configuration> <configSections> <section name="log4net&qu

log4net根据日志类型写入到不同的文件中

1 <?xml version="1.0"?> 2 <configuration> 3 <configSections> 4 <!--log4net配置安装--> 5 <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> 6 </configSection

.NET Core下的日志(3):如何将日志消息输出到控制台上

当我们利用LoggerFactory创建一个Logger对象并利用它来实现日志记录,这个过程会产生一个日志消息,日志消息的流向取决于注册到LoggerFactory之上的LoggerProvider.说的更加具体一点,日志消息的归宿取决于注册到LoggerFactory的LoggerProvider究竟会提供怎样的Logger.微软提供了一系列原生的LoggerProvider,我们先来认识一下将控制台作为日志输出目的地的ConsoleLoggerProvider.ConsoleLoggerPr

java mybatis学习之$和#区别,mapper代理接口,动态SQL,在日志中输出mybatis的sql语句

1.在mybatis中,$和#的区别: #{}:表示一个预处理参数,参数类型不定,是根据传入的参数类型来设定的.类似于JDBC中的? 特例使用,模糊查询:(针对oracle): and username like concat(concat('%',#{username}),'%') ${}:相当于是我们的JDBC里的字符串拼接.这里就相当于传入的就是一个字符串(不管传入什么样的数据类型,都是字符串) and username like '%${value}%' 2.$和#在mybatis中的优