gpt4 book ai didi

.net - 为 .Net Core 3.1 应用程序配置 log4net 的最简单的正确方法

转载 作者:行者123 更新时间:2023-12-03 13:47:41 32 4
gpt4 key购买 nike

我正在努力理解配置 log4net 以在 .Net Core 3.1 应用程序中使用的最简单方法。该应用程序使用的是 log4net 2.0.8。所以:

有没有办法使用 application.runtimeconfig.json 文件来配置来做到这一点?如果是这样,我会向应用程序添加什么代码来告诉它使用这些设置 - 例如:

log4net.Config.XmlConfigurator.Configure();

如果这是不可能的,那么添加配置文件(比如 log4net.xml)并告诉应用程序使用它的最简单方法是什么?

我想暂时将所有日志记录定向到一个文件,比如 Temp.log。我看过很多 log4net 页面,但他们要么谈论使用在新的 .Net Core 3.1 项目中不存在的 Assembly.Info.cs,要么似乎以编程方式设置了我想避免的 log4net 配置。我原以为这很容易,所以如果我错过了一个明显的方法,我深表歉意。

最佳答案

稍微编辑我的答案以明确 Core 不包含开箱即用的普通文件记录器。我的错。 (截至 2020 年 5 月 19 日)

我建议使用 Microsoft 的日志扩展而不是 log4net,但这应该对您有用。 Core 现在带有一个记录器,它非常好,易于 DI 插入,并使用 appsettings.json。如果你愿意,我也可以提供一个样本。但这里是 log4net 基本示例。

从文件加载配置的示例控制台应用程序(文件设置为始终复制)

using log4net.Repository;
using System;
using System.IO;
using System.Reflection;

namespace ConsoleApp1Core
{
class Program
{
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

static void Main(string[] args)
{
try
{

ILoggerRepository repository = log4net.LogManager.GetRepository(Assembly.GetCallingAssembly());

var fileInfo = new FileInfo(@"log4net.config");

log4net.Config.XmlConfigurator.Configure(repository, fileInfo);

log.Info("test");

Console.WriteLine("press any key");
Console.ReadLine();
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
Console.WriteLine("Press any key to exit");
Console.ReadLine();
}
}
}
}

关于.net - 为 .Net Core 3.1 应用程序配置 log4net 的最简单的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59311444/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com