asp.net-core-2.0 - 如何使用 log4net.config 指定日志文件路径?
问题描述
在我的 log4net.config 我放
<appender name="Access" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="%envFolderPath{CommonApplicationData}\MyApp\test.txt"/>
&我的配置代码是
XmlDocument log4netConfig = new XmlDocument();
log4netConfig.Load(File.OpenRead("log4net.config"));
var repo = log4net.LogManager.CreateRepository(Assembly.GetEntryAssembly(),
typeof(log4net.Repository.Hierarchy.Hierarchy));
log4net.Config.XmlConfigurator.Configure(repo, log4netConfig["log4net"]);
但它没有在【C:\ProgramData\MyApp】创建文件。
我也尝试过使用
- %envFolderPath{应用程序数据}
- %envFolderPath{程序数据}
有任何想法吗。
谢谢!
解决方案
在我的机器上工作正常。您可以尝试使用以下步骤对其进行调试:
- 尝试将信息记录到 C:\temp 之类的硬编码路径中,以确保您的配置工作正常。
- 添加引用以
System.Configuration.ConfigurationManager
确保所有库都到位 - 使用这一行来配置 log4net:
XmlConfigurator.Configure(LogManager.GetRepository(Assembly.GetEntryAssembly()), new FileInfo("log4net.config"));
- 确保您有足够的权限写入特殊文件夹。
- 使用相同的配置在 .net 核心中创建新的控制台应用程序,并启用内部调试:
log4net.Util.LogLog.InternalDebugging = true;
你会看到到底发生了什么。您将看到您的应用程序正在使用哪些路径,并且您将看到在内部 log4net 配置期间发生的任何错误。
推荐阅读
- python - 如何使用子图在 matplotlib 中实现自动颜色更改?
- audiokit - AudioKit 实时音高校正/自动调谐
- mysql - 从几年的数据中寻找平均值
- bash - 如何检查变量是否包含与文件相同的字符串?
- sql-server - SQL 命令模式 SQL SERVER - 无法打印
- grails - 尽管路径正确,但无法使用 Grails
- google-sheets - 如何使用 google Sheets python API 脚本基于单个单元格有条件地格式化整行?
- domain-driven-design - DDD 有界上下文服务与数据库集成
- julia - 抑制 julia 的 REPL 中的包编译输出
- python - TypeError:无法转换“文本”:无法理解数据类型