Apache Log4net C# Console Demo

本文提供了一个Apache Log4net在C# Console应用中的实战示例,包括如何添加引用、配置XML文件以输出日志到txt文件,以及在Program.cs和Bar.cs中的代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

官网上的实例代码,自己修改后实现的demo.

1. 添加引用

解决方案视图,右键引用,搜索并安装

 

2. 项目树

3. 代码

这里用的读取xml方式初始化配置log4net.

Log4NetConfig.xml

此文件放在代码同级目录,并拷贝到debug和release中

这里配置输出错误日志到根目录log.txt

<log4net>
  <appender name="Console" type="log4net.Appender.ConsoleAppender">
    <layout type="log4net.Layout.PatternLayout">
      <!-- Pattern to output the caller's file name and line number -->
      <conversionPattern value="%date %5level [%thread] (%file:%line) - %message%newline" />
    </layout>
  </appender>

  <appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
    <file value="log" />
    <appendToFile value="true" />
    <maximumFileSize value="100KB" />
    <maxSizeRollBackups value="2" />

    <layout type="log4net.Layout.PatternLayout">
      <conversionPattern value="%date %5level [%thread] (%file:%line) - %message%newline" />
    </layout>
  </appender>

  <root>
    <level value="DEBUG" />
    <appender-ref ref="Console" />
    <appender-ref ref="RollingFile" />
  </root>
</log4net>

Program.cs

using Com.foo;

// Import log4net classes.
using log4net;
using log4net.Config;
using System.IO;

namespace ConsoleApp_ApacheLog4net
{
    class MyApp
    {
        // Define a static logger variable so that it references the
        // Logger instance named "MyApp".
        private static readonly ILog log = LogManager.GetLogger(typeof(MyApp));

        static void Main(string[] args)
        {
            // Set up a simple configuration that logs on the console.
            // BasicConfigurator.Configure();

            string log4netConfigPath = "Log4NetConfig.xml";

            if (File.Exists(log4netConfigPath))
            {
                // Load config file
                XmlConfigurator.Configure(new System.IO.FileInfo(log4netConfigPath));

                // Reload the config each time the file is modified
                XmlConfigurator.ConfigureAndWatch(new System.IO.FileInfo((log4netConfigPath)));
            }

            log.Info("Entering application.");
            Bar bar = new Bar();
            bar.DoIt();
            log.Info("Exiting application.");

            try
            {
                int test = 0;
                int result = 100 / test;
            }
            catch (System.Exception ex)
            {
                log.Error(ex.Message);
            }
        }
    }
}

Bar.cs

// Import log4net classes.
using log4net;

namespace Com.foo
{
    public class Bar
    {
        private static readonly ILog log = LogManager.GetLogger(typeof(Bar));

        public void DoIt()
        {
            log.Warn("Did it again!");
        }
    }
}

4. 运行

断点调试

Txt

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值