一、asp.net core webapi添加日志
1.NuGet安装:log4net
2.Startup中加入:
public static ILoggerRepository repository { get; set; }
//public Startup(IConfiguration configuration)
//{
// Configuration = configuration;
//}
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
//.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
repository = LogManager.CreateRepository("NETCoreRepository");
XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
SDKProperties.LogRepository = repository;//类库中定义的静态变量
}
3.加入log配置文件(log4net.config)
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<!-- This section contains the log4net configuration settings -->
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout" value="%date [%thread] %-5level %logger - %message%newline" />
</appender>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="log-file.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logfile/" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<staticLogFileName value="false" />
<datePattern value="yyyyMMdd'.log'" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<!-- Setup the root category, add the appenders and set the default level -->
<root>
<level value="ALL" />
<appender-ref ref="ConsoleAppender" />
<appender-ref ref="FileAppender" />
<appender-ref ref="RollingLogFileAppender" />
</root>
</log4net>
</configuration>
4.写日志测试
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
var log = LogManager.GetLogger(repository.Name, typeof(Startup));
log.Info("test");
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.UseMvc();
app.UseSwagger();
// Enable middleware to serve swagger-ui (HTML, JS, CSS etc.), specifying the Swagger JSON endpoint.
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("/swagger/v1/swagger.json", "其实,我是一个演员。");
c.ShowRequestHeaders();
});
}
二、webapi引用的类库添加日志
1.类库中添加类:
public class SDKProperties
{
public static ILoggerRepository LogRepository { get; set; }
}
public class Base
{
private static readonly ILog log = LogManager.GetLogger(SDKProperties.LogRepository.Name, typeof(Base));
public static void LogTest()
{
log.Info("Info test");
log.Warn("Warn test");
log.Error("Error test");
}
}
2.webapi->Startup()中,初始化变量:
SDKProperties.LogRepository = repository;//类库中定义的静态变量
3.webapi->value控制器
[HttpGet]
public IEnumerable<string> Get()
{
log.Info("Dying in the sun");
Base.LogTest();
return new string[] { "value1", "value2" };
}
4.运行
查看日志:
这样webapi和类库中都能写日志了。