.net core 框架里本身嵌入了日志系统。实例化 Microsoft.Extensions.Logging.LoggerFactory 开始
利用 ILoggerFactory 的扩展方法指定您想使用的提供程序。代码如下:
public static void Main(string[] args = null)
{
ILoggerFactory loggerFactory = new LoggerFactory()
.AddConsole()
.AddDebug();
ILogger logger = loggerFactory.CreateLogger<Program>();
logger.LogInformation(
"This is a test of the emergency broadcast system.");
}
但是现成的(Microsoft.Extensions.Logging.Logger 没有此类异常处理,因此,如果发生异常,将需要调用代码来处理,而且想要这样做的话,每次都得调用 Logger.LogX。解决此问题的常规方法可能是包装记录器以捕获异常。基本上输出在console上。而且没有找到输出txt文件。当发布在iis上啥都看不到。
所以决定还是整合log4net。
首先nuget里加入log4net的包,增加配置文件。然后在 startup文件中加入下面代码:
public static ILoggerRepository repository { get; set; }
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
//(Jacky 2017-06-27)
repository = LogManager.CreateRepository("NETCoreRepository");
XmlConfigurator.Configure(repository, new FileInfo("log4net.config"));
}
调用日志
var log = LogManager.GetLogger(repository.Name, typeof(Startup));
log.Info("test");