Apache-log4net日志框架配置

log4net日志框架

在解决方案的nuget包中安装此包,并在web.config和app.config中进行配置。

简介

简单理解,若不是很感兴趣可跳过。

首先,需要在xml文档中的configuration节点中进行log4net向导配置,意在声明log4net。

<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
    </configSections>
</configuration>

configSections节点在这里就是声明了section的log4net项,并指定了类型和它运行的实例:log4net.

在此文件的下面,就需要对log4net实例作为节点进行书写。

<log4net>
    <!--log根节点配置-->
    <root>
      <!--指定日志级别-->
      <level value="INFO"></level>
      <!--呈现日志的方式:文件方式-->
      <appender-ref ref="FileAppender"/>

      <appender name="FileAppender" type="log4net.Appender.FileAppender">
        <!--文件名指定-->
        <file value="log.txt"></file>
        <!--线程锁指定-->
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
        <!--指定输出格式-->
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date [%thread] %level %logger -%message%newline"/>
        </layout>
      </appender>
    </root>
  </log4net>

每一层都可以单独的看作一个节点,每一个标签也可以同样使用。

root节点:可以看作是日志的基本配置,即该日志配置属于全局的整个基础配置。

level节点:用于指定 日志级别,这里是info级别(info,error,warning,debug,fatal)

appender-ref节点:用于指定日志的输出平台是console(控制台💻 ),还是File(文件📓)形式。

appender节点:记录信息的名字,即appender-ref节点引用节点,它所实现的就是记录方式,记录时机。

file节点:用于日志文件名的记录。

lockingModel节点:线程锁的指定(常见于日志文件io)。

layout节点:日志文件内容格式的配置。

​ conversionPattern节点:日志格式规定。

以上是log4net的节点规定,若感兴趣可以去官网文档进行查阅。

参加一:[翻译]log4net教程 (shuzhiduo.com)

参见二:Apache log4net – Apache log4net: Config Examples - Apache log4net

日志输出方式基础分3种:

  • 数据库日志
  • 文件日志
  • 控制台日志

文件输出格式配置

<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
    </configSections>
</configuration>

<log4net>
    <!--log根节点配置-->
    <root>
      <!--指定日志级别-->
      <level value="INFO"></level>
      <!--呈现日志的方式:文件方式-->
      <appender-ref ref="FileAppender"/>
		<!---->
      <appender name="FileAppender" type="log4net.Appender.FileAppender">
        <!--文件名指定-->
        <file value="log.txt"></file>
        <!--线程锁指定-->
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
        <!--指定输出格式-->
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date [%thread] %level %logger -%message%newline"/>
        </layout>
      </appender>
    </root>
  </log4net>

控制台配置


<configuration>
    <configSections>
        <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
    </configSections>


<log4net>
    <!--log根节点配置-->
    <root>
      <!--指定日志级别-->
      <level value="INFO"></level>
      <!--呈现日志的方式:文件方式-->
      <appender-ref ref="FileAppender"/>
      <appender-ref ref="ConsoleAppender"/>
		<!---->
        
        
      <appender name="FileAppender" type="log4net.Appender.FileAppender">
        <!--文件名指定-->
        <file value="log.txt"></file>
        <!--线程锁指定-->
        <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/>
        <!--指定输出格式-->
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%date [%thread] %level %logger -%message%newline"/>
        </layout>
      </appender>
        
        
       <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
            <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date{ABSOLUTE}[%thread] %level %logger - %message%newline"/>
            </layout>
            <filter type="log4net.Filter.StringMatchFilter">
                <stringToMatch value="test" />
            </filter>
            <filter type="log4net.Filter.DenyAllFilter" />
		</appender> 
    </root>
  </log4net>
</configuration>

数据库配置

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
  </configSections>
  <log4net debug="false">
       <appender name="LogFileAppender" type="log4net.Appender.FileAppender" >
        <param name="File" value="c:\Log\DBLog.txt" />
        <param name="AppendToFile" value="true" />
        <layout type="log4net.Layout.PatternLayout">
          <param name="ConversionPattern" value="%d [%t] %-5p %c [%x] - %m%n" />
        </layout>
      </appender>
    
    <appender name="ADONetAppender" type="log4net.Appender.ADONetAppender">
      <bufferSize value="10"/>
      <connectionType value="System.Data.SqlClient.SqlConnection, System.Data, Version=1.0.3300.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
        <!--连接数据库串-->
      <connectionString value="server=.;database=ZYC;user id=sa;password=123456"/>
        <!--sql语句-->
      <commandText value="INSERT INTO Log ([_Date],[Thread],[_Level],[Logger],[_Message],[Exception]) VALUES (@log_date, @thread, @log_level, @logger, @message, @exception)"/>
        <!--参数声明-->
      <parameter>
        <parameterName value="@log_date"/>
        <dbType value="DateTime"/>
        <layout type="log4net.Layout.RawTimeStampLayout"/>
      </parameter>
      <parameter>
        <parameterName value="@thread"/>
        <dbType value="String"/>
        <size value="255"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%thread"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@log_level"/>
        <dbType value="String"/>
        <size value="50"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%level"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@logger"/>
        <dbType value="String"/>
        <size value="255"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%logger"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@message"/>
        <dbType value="String"/>
        <size value="4000"/>
        <layout type="log4net.Layout.PatternLayout">
          <conversionPattern value="%message"/>
        </layout>
      </parameter>
      <parameter>
        <parameterName value="@exception"/>
        <dbType value="String"/>
        <size value="2000"/>
        <layout type="log4net.Layout.ExceptionLayout"/>
      </parameter>
        <!--参数声明-->
    </appender>
       <root>
         <level value="DEBUG" />
         <appender-ref ref="ADONetAppender" />
       </root>

  </log4net>

小插曲❌ :对这个config这一大戳稍微概括一下:

configSections相当于一个声明:告知配置文件如下有log4net这一个配置集合。

log4net:里面则是所有的配置,结构如下:

​ root节点:用于声明不同的日志输出种类([控制台,文件,数据库] 在root节点【通过appender-ref节点】中又一次的声明,日志等级(变量))

​ appender进行不同日志平台输出的参数格式编写。

重点,操作不当,日志不见效。

找到解决方案文件下面的Properties/AssemblyInfo.cs。在里面书写代码。

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

ConfigFile用于告知log4net的配置文件位置,这里建议单独为其指定,层次更分明。

按需求,在.cs文件下进行如下:

using log4net;

public class Mylog{
    public static log4net.ILog myLogger;
    static Mylog(){
        myLogger = log4net.LogManager.GetLogger(typeof(Mylog));
    }
    
    public void LogInfo(){
       myLogger.Info("hello");
       myLogger.Error("hello");
       myLogger.Debug("hello");
       myLogger.Fatal("hello");
    }
}

​ 会根据输出方式,进行输出。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Log4j是一个强大的Java日志框架,可以通过灵活的配置来控制日志的输出。下面是一个简单的Log4j配置示例: 1. 在项目中引入Log4j相关的jar包。可以在Maven中添加如下依赖: ```xml <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> ``` 2. 创建一个log4j.properties文件,并将其放在类路径下。示例配置如下: ```properties # 设置日志输出级别为DEBUG log4j.rootLogger=DEBUG, console # 控制台输出 log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.layout=org.apache.log4j.PatternLayout log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %m%n ``` 上面的示例配置中,`log4j.rootLogger`设置了日志输出级别为DEBUG,`log4j.appender.console`表示将日志输出到控制台,`log4j.appender.console.layout`表示使用PatternLayout来格式化输出的日志信息。 在PatternLayout中,`%d{yyyy-MM-dd HH:mm:ss}`表示输出日志的时间,`%t`表示输出日志的线程名,`%-5p`表示输出日志的级别,`%c{1}`表示输出日志的类名,`%L`表示输出日志的行号,`%m%n`表示输出日志的消息和换行符。 3. 在Java代码中使用Log4j输出日志。示例代码如下: ```java import org.apache.log4j.Logger; public class Log4jDemo { private static final Logger logger = Logger.getLogger(Log4jDemo.class); public static void main(String[] args) { logger.debug("Debug message"); logger.info("Info message"); logger.warn("Warn message"); logger.error("Error message"); logger.fatal("Fatal message"); } } ``` 在代码中,使用`Logger.getLogger`方法获取一个Logger对象,然后使用不同级别的方法输出日志信息。 4. 运行程序,就可以在控制台上看到输出的日志信息了。根据上面的示例配置,输出的日志信息将包含时间、线程名、级别、类名、行号和消息等信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值