[英]Write log file to AppData with log4net Asp.net Core 2.2 not working
我正在尝试将日志文件写入 AppData 位置,但它不起作用。 我试过env%{AppData}
, env%{APPDATA}
, %APPDATA%
, ${AppData}
, ${APPDATA}
但没有人工作。 如果我使用C:\Temp
它确实有效。
我使用 Asp.Net Core 2.2。 和 log.net 2.08。
有什么建议么?
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
<appender name="console" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5level %date{dd-mm-yyyy HH:mm:ss} %logger [%thread] - %message %exception%newline" />
</layout>
</appender>
<appender name="file" type="log4net.Appender.RollingFileAppender">
<file value="${AppData}\MyApp\MyLogFile.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5level %date{dd-mm-yyyy HH:mm:ss} %logger [%thread] - %message %exception%newline" />
</layout>
</appender>
</log4net>
对于遇到同样问题的人:
Nuget(安装):
log4net
Microsoft.Extensions.Options.ConfigurationExtensions
Microsoft.Extensions.Logging.Console
Microsoft.Extensions.Logging.Debug
Microsoft.Extensions.Logging.Log4Net.AspNetCore
AssemblyInfo.cs:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
应用设置.json:
"Log4NetConfigFile": {
"Name": "log4net.config"
},
程序.cs
using Microsoft.Extensions.Logging; //Had to write manually
public static void Main(string[] args)
{
var logRepo = LogManager.GetRepository(Assembly.GetEntryAssembly());
log4net.GlobalContext.Properties["LogPath"] = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "MyApp");
log4net.Config.XmlConfigurator.Configure(logRepo, new FileInfo("log4net.config"));
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args)
.ConfigureLogging((webHostBuilderContext, loggingBuilder) =>
{
loggingBuilder.AddLog4Net();
})
.UseStartup<Startup>();
}
将 log.net.config 设置为 Copy to Output directory: Copy Always
日志.net.config:
<?xml version="1.0" encoding="utf-8" ?>
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="console" />
<appender-ref ref="file" />
</root>
<appender name="console" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5level %date{dd-mm-yyyy HH:mm:ss} %logger [%thread] - %message %exception%newline" />
</layout>
</appender>
<appender name="file" type="log4net.Appender.RollingFileAppender">
<file type="log4net.Util.PatternString" value="%property{LogPath}\MyLogFile.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="5" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%-5level %date{dd-mm-yyyy HH:mm:ss} %logger [%thread] - %message %exception%newline" />
</layout>
</appender>
</log4net>
家庭控制器.cs
private static readonly log4net.ILog log = log4net.LogManager.GetLogger(typeof(HomeController));
public HomeController()
{
log.Info("Starting GenerateDebugLog method...");
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.