log4net的配置与使用

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介:

log4net解决的问题是在.Net下提供一个记录日志的框架,它提供了向多种目标写入的实现,比如利用log4net可以方便地将日志信息记录到文件、控制台、Windows事件日志和数据库(包括MS SQL Server, Access,Oracle9i,Oracle8i,DB2,SQLite)中。

log4net主页:http://logging.apache.org/log4net/

log4net配置:

1、下载log4net.dll,在项目中添加该引用。

2、在项目AssemblyInfo.cs中添加:

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

3、对App.config文件进行配置,如果没有App.config文件,可以通过在解决方案中,添加新建项→应用程序配置文件,进行添加。

下面是个人比较喜欢的两种配置,一种以日期的形式记录,每天的日志都写入到一个文件中,按日期可以方便查看日志。

另一种是以文件大小来记录,如果超过了大小就重新生成一个文件,最多为maxSizeRollBackups个,超过maxSizeRollBackups个则会轮训覆盖。

level定义记录的日志级别,定义记录哪个级别以上的日志,级别由高往低依次是:None > Fatal > ERROR > WARN > DEBUG > INFO >ALL

复制代码
<?xml version="1.0"?>
<configuration>
  <configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/>
  </configSections>
  <log4net>
    <root>
      <level value="ALL"/> <!---日志级别-->
      <appender-ref ref="RollingLogFileAppender"/>
    </root>
    <!-- name属性指定其名称,type则是log4net.Appender命名空间的一个类的名称,意思是指定使用哪种介质-->
    <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Log\\"/><!-- 输出到什么目录-->
      <appendToFile value="true"/><!-- 是否到附加到文件中-->
      <rollingStyle value="Date"/><!-- 文件创建方式,以日期的方式记录-->
      <datePattern value="yyyy-MM-dd&quot;.txt&quot;"/><!-- 文件格式-->
      <staticLogFileName value="false"/><!--否采用静态文件名,文件名是否唯一-->
      <layout type="log4net.Layout.PatternLayout"> <!---日志内容布局-->
        <param name="ConversionPattern" value="%date [%thread] (%file:%line) %-5level %logger [%property{NDC}] - %message%newline"/>
      </layout>
    </appender>

    <!---另一种Appender-->
    <appender name="DateFileInfoAppender" type="log4net.Appender.RollingFileAppender">
      <file value="Log\\log.txt"/> <!-- 输出到什么文件-->
      <appendToFile value="true"/> <!-- 是否到附加到文件中-->
      <rollingStyle value="Size" />
      <maxSizeRollBackups value="10"/> <!--日志文件的最大个数-->
      <maximumFileSize value="10MB"/>  <!-- 单个日志文件最大的大小-->
      <staticLogFileName value="true"/> <!--否采用静态文件名,文件名是否唯一-->
      <layout type="log4net.Layout.PatternLayout"> <!---日志内容布局-->
        <param name="ConversionPattern" value="%date [%thread] (%file:%line) %-5level %logger [%property{NDC}] - %message%newline"/>
      </layout>
    </appender>
  </log4net>
  
<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
</configuration>
复制代码

log4net的配置官方主页:http://logging.apache.org/log4net/release/config-examples.html

4、log4net的使用:

复制代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net;

namespace ConfigTest
{
    public static class TestClass
    {
        private static readonly ILog log = LogManager.GetLogger(typeof(TestClass));

        public static void TestLog()
        {
            for (int i = 0; i < 1000; ++i)
            {
                log.Info(string.Format("Log info {0}",i));
                log.Debug(string.Format("Log debug {0}", i));
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                TestClass.TestLog();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }
        }
    }
}
复制代码

 

参考:

http://zhoufoxcn.blog.51cto.com/792419/429988/

 

    本文转自阿凡卢博客园博客,原文链接:http://www.cnblogs.com/luxiaoxun/p/3583386.html,如需转载请自行联系原作者


相关实践学习
日志服务之使用Nginx模式采集日志
本文介绍如何通过日志服务控制台创建Nginx模式的Logtail配置快速采集Nginx日志并进行多维度分析。
相关文章
|
2天前
|
开发工具 git
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
git显示开发日志+WinSW——将.exe文件注册为服务的一个工具+图床PicGo+kubeconfig 多个集群配置 如何切换
14 1
|
3天前
|
数据采集 监控 Java
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
本文是关于SpringBoot日志的详细教程,涵盖日志的定义、用途、SLF4J框架的使用、日志级别、持久化、文件分割及格式配置等内容。
11 0
SpringBoot日志全方位超详细手把手教程,零基础可学习 日志如何配置及SLF4J的使用......
|
2月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
Java应用结构规范问题之配置Logback以仅记录错误级别的日志到一个滚动文件中的问题如何解决
|
2月前
|
Java 应用服务中间件 HSF
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
Java应用结构规范问题之配置Logback以在控制台输出日志的问题如何解决
|
2月前
|
存储 Ubuntu Apache
如何在 Ubuntu VPS 上配置 Apache 的日志记录和日志轮转
如何在 Ubuntu VPS 上配置 Apache 的日志记录和日志轮转
35 6
|
2月前
|
存储 Ubuntu 应用服务中间件
如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转
如何在 Ubuntu VPS 上配置 Nginx 的日志记录和日志轮转
20 4
|
2月前
|
开发框架 JSON 安全
分享一个 .NET Core 使用选项方式读取配置内容的详细例子
分享一个 .NET Core 使用选项方式读取配置内容的详细例子
|
2月前
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
【Azure 应用服务】App Service 配置 Application Settings 访问Storage Account得到 could not be resolved: '*.file.core.windows.net'的报错。没有解析成对应中国区 Storage Account地址 *.file.core.chinacloudapi.cn
|
2月前
|
存储 容器
【Azure 事件中心】为应用程序网关(Application Gateway with WAF) 配置诊断日志,发送到事件中心
【Azure 事件中心】为应用程序网关(Application Gateway with WAF) 配置诊断日志,发送到事件中心
|
2月前
|
人工智能
【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中
【Azure Application Insights】在Azure Function中启用Application Insights后,如何配置不输出某些日志到AI 的Trace中