简体   繁体   English

使用 log.net Asp.net Core 2.2 将日志文件写入 AppData 不工作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM