我想我尝试了所有可能的调用组合以使log4net在ASP.NET Core 2.1上都能正常工作,但到目前为止还算不上成功。我遵循How to use log4net in Asp.net core 2.0中描述的步骤。我还探索了ASP.NET Core 2.1 + Log4Net中描述的所有变体。
到目前为止没有运气。将log4net.config复制到二进制文件夹。它被使用(服务运行时我注意到它被锁定了)。我使用了绝对路径和相对路径。 已调用,未调用loggerFactory.AddLog4Net(“ log4net.config”); 我都打电话给了
${1//\//\\\/}
${ - bash expansion starts
1 - first positional argument - the pattern
// - bash pattern substitution pattern separator "replace-all" variant
\/ - literal slash
/ - bash pattern substitution replacement separator
\\ - literal backslash
\/ - literal slash
} - bash expansion ends
和
$ input="ka/pus/ta"
$ pattern="/pus/"
$ replacement="/re/"
$ safe_replace "$pattern" "$replacement" <<< "$input"
ka/re/ta
ILog是通过以下方式创建的:
var log4netConfig = new System.Xml.XmlDocument();
log4netConfig.Load(File.OpenRead(@"log4net.config"));
var repo = LogManager.CreateRepository(Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy));
XmlConfigurator.Configure(repo, log4netConfig["log4net"]);
但是我也使用了这种方法:
ILoggerRepository repository = LogManager.GetRepository(Assembly.GetEntryAssembly());
XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
即使调用了Configure方法,每个时间日志也没有创建任何Appender(列表为空)。
当然不会创建任何文件。我注意到有人报告说它可以添加到您的Core 2.1项目中,但是我还没有发现正确的调用和操作排列方式。
有没有一种方法可以跟踪log4net实际能够解决的问题?到目前为止,以我的长期经验来看,log4net是最难使用的组件。 还是步骤的确切组合? 我正在使用log4net 2.0.8 nuget。
答案 0 :(得分:0)
就像我上面所描述的,看起来好像有两个问题加起来就是问题。实际上,至少根据我提供的第一个链接的说明创建了日志WAS。但是,它是在错误的目录中创建的。 此处解释了该错误(.NET Core控制台应用程序的默认工作目录是源目录,而不是bin目录):https://github.com/dotnet/project-system/issues/589
第二个问题是由于Logger的Appender列表为空,即使加载和使用了Appender也是如此。这显然是令人误解的,但我没有对此行为做出任何解释。似乎是“设计使然”。
因此,默认情况下,.NET Core Console Appliaction工作目录是项目根目录(原文如此),而不是.NET Framework情况下的bin目录。
其次,记录器中没有Appenders,但这并不表示有任何问题。