[英]Write log file to AppData with log4net Asp.net Core 2.2 not working
I'm trying to write log file to AppData location, but it doesn't work.我正在尝试将日志文件写入 AppData 位置,但它不起作用。 I've tried with
env%{AppData}
, env%{APPDATA}
, %APPDATA%
, ${AppData}
, ${APPDATA}
but no one works.我试过
env%{AppData}
, env%{APPDATA}
, %APPDATA%
, ${AppData}
, ${APPDATA}
但没有人工作。 If I use C:\Temp
it does work though.如果我使用
C:\Temp
它确实有效。
I use Asp.Net Core 2.2.我使用 Asp.Net Core 2.2。 and log.net 2.08.
和 log.net 2.08。
Any suggestions?有什么建议么?
<?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>
For anyone with the same problems I had:对于遇到同样问题的人:
Nuget (Install): Nuget(安装):
log4net
Microsoft.Extensions.Options.ConfigurationExtensions
Microsoft.Extensions.Logging.Console
Microsoft.Extensions.Logging.Debug
Microsoft.Extensions.Logging.Log4Net.AspNetCore
AssemblyInfo.cs: AssemblyInfo.cs:
[assembly: log4net.Config.XmlConfigurator(ConfigFile = "log4net.config", Watch = true)]
appsettings.json:应用设置.json:
"Log4NetConfigFile": {
"Name": "log4net.config"
},
Program.cs程序.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>();
}
Set log.net.config to Copy to Output directory: Copy Always将 log.net.config 设置为 Copy to Output directory: Copy Always
log.net.config:日志.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>
HomeController.cs家庭控制器.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.