I have the problem with Log4NET in combination with ASP.NET 7.0 that it doesn’t write to my Logfile, but he creates the Logfile and writes to the console.
So I read a lot about assembly references, log4net layout patterns etc. but nothing worked. In StartupBase, I configure Log4Net by passing the log4net.config.
The log4net.config is found, I testet it by renaming .
After renaming, the file changed, too. So, I think the config file was found.
StartUpBase.cs
public class StartUpBase
{
public ILog Logger { get; set; }
public void ConfigureServiceBase(IServiceCollection services)
{
var repo = LogManager.CreateRepository(
Assembly.GetEntryAssembly(), typeof(log4net.Repository.Hierarchy.Hierarchy));
XmlConfigurator.Configure(repo, new FileInfo("log4net.config"));
Logger = LogManager.GetLogger(typeof(StartUpBase));
services.AddSingleton(typeof(ILog), Logger);
}
}
Startup.cs
public class Startup : StartUpBase
{
public Startup(IWebHostEnvironment env, IConfiguration configuration) : base(env, configuration)
{
}
public void ConfigureServices(IServiceCollection services)
{
ConfigureServiceBase(services);
...
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
...
}
}
Program.cs
class ServiceTemplate
{
static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args)
{
return WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
}
Root Controller
[ApiController]
[Route("api/[controller]")]
public class Root : Controller
{
public Root(ILogger<Root> Logger)
{
Logger.LogDebug("Hello DEBUG");
Logger.LogInformation("Hello DEBUG");
Logger.LogWarning("Hello DEBUG");
Logger.LogError("Hello DEBUG");
}
}
log4net
<log4net debug="true">
<root>
<level value="ALL" />
<appender-ref ref="Console" />
<appender-ref ref="RollingFile" />
</root>
<appender name="RollingFile" type="log4net.Appender.RollingFileAppender">
<file value="C:RepositoryShareSoftwareLogsServiceTemplate.log" />
<staticLogFileName value="true" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<maxSizeRollBackups value="100" />
<maximumFileSize value="5MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<appender name="Console" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<!-- Pattern to output the caller's file name and line number -->
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
</log4net>