NLog 与 DNX 核心 5.0
NLog with DNX Core 5.0
我正在尝试使用 ASP.Net 5 和 MVC 6 实现 NLog 日志记录。默认情况下,DNX 451 和 DNX Core 50 都包含在项目模板中。
我正在尝试按照示例 here.
实施 NLog 日志记录
但是,在示例应用程序中,有以下行 -
#if !DNXCORE50
factory.AddNLog(new global::NLog.LogFactory());
#endif
如果我 运行 应用程序,此行永远不会被命中,因为 mvc 应用程序默认安装了 dnx core 50。
是否有任何可用于 DNX Core 50 的记录器?如果不是,dnx 核心在默认 mvc 应用程序中的作用是什么 - 它真的需要吗?
编辑:如果我删除上面的 #if !DNXCORE50....
行,我会收到以下错误 -
DNX Core 5.0 error - The type or namespace name 'NLog' could not be found in the global namespace'
DNX Core 5.0 仅在您需要 .Net 框架的云优化跨平台版本时才需要;如果您仍计划仅在 Windows 环境中使用 MVC 应用程序,您可以从 project.json.
中删除 dnxcore50
框架引用
NLog for .NET Core(DNX 环境)当前可用版本 4.4.0-alpha1。
步骤:
创建NLog.config
<?xml version="1.0" encoding="utf-8" ?>
<targets>
<target xsi:type="ColoredConsole" name="ToConsole" />
</targets>
<rules>
<logger name="*" minlevel="Info" writeTo="ToConsole" />
</rules>
加载并解析配置
private static ILogger _logger;
public static void LoggerSetup()
{
var reader = XmlReader.Create("NLog.config");
var config = new XmlLoggingConfiguration(reader, null); //filename is not required.
LogManager.Configuration = config;
_logger = LogManager.GetCurrentClassLogger();
}
public static void Main(string[] args)
{
LoggerSetup();
// Log anything you want
}
在处理 MVC6 中的 MVC 工具(dnx 东西)时,对此的回答非常流畅。
为了让 NLog 与我的网络应用程序一起工作,我必须执行几个步骤:
-> 非常感谢两次 NLog 讨论(here and here)
我只需要在 Startup.cs 的构造函数中添加配置设置:
public Startup(IHostingEnvironment env)
{
// Set up configuration sources.
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables();
// Set up logging configuration
// from: https://github.com/NLog/NLog/issues/641
// and: https://github.com/NLog/NLog/issues/1172
var reader = XmlTextReader.Create(File.OpenRead(Path.Combine(builder.GetBasePath(),"NLog.config"))); //stream preferred above byte[] / string.
LogManager.Configuration = new XmlLoggingConfiguration(reader, null); //filename is not required.
log.Info("NLogger starting");
Configuration = builder.Build();
}
我认为这有点权宜之计,因为微软正在引入一个新的日志记录界面(我希望最终会像 SLF4J.org 在 Java).不幸的是,在我写这篇文章的时候,关于它的文档有点薄。 NLog 正在努力让自己实现新的 dnx ILoggingProvider 接口。
有关我的项目设置的其他信息
- 我的NLog.config文件位于项目根文件夹中,旁边
project.json 和 appsettings.json。我不得不做一点挖掘
在 AddJsonFile() 中查看它们如何处理路径。
- 我使用 yeoman.io 和他们的 aspnet 生成器来设置 Web 项目。
NLog 版本,感谢上面的 Lukasz Pyrzyk:
"NLog":“4.4.0-alpha1”
我正在尝试使用 ASP.Net 5 和 MVC 6 实现 NLog 日志记录。默认情况下,DNX 451 和 DNX Core 50 都包含在项目模板中。
我正在尝试按照示例 here.
实施 NLog 日志记录但是,在示例应用程序中,有以下行 -
#if !DNXCORE50
factory.AddNLog(new global::NLog.LogFactory());
#endif
如果我 运行 应用程序,此行永远不会被命中,因为 mvc 应用程序默认安装了 dnx core 50。
是否有任何可用于 DNX Core 50 的记录器?如果不是,dnx 核心在默认 mvc 应用程序中的作用是什么 - 它真的需要吗?
编辑:如果我删除上面的 #if !DNXCORE50....
行,我会收到以下错误 -
DNX Core 5.0 error - The type or namespace name 'NLog' could not be found in the global namespace'
DNX Core 5.0 仅在您需要 .Net 框架的云优化跨平台版本时才需要;如果您仍计划仅在 Windows 环境中使用 MVC 应用程序,您可以从 project.json.
中删除dnxcore50
框架引用
NLog for .NET Core(DNX 环境)当前可用版本 4.4.0-alpha1。
步骤:
创建NLog.config
<?xml version="1.0" encoding="utf-8" ?>
<targets> <target xsi:type="ColoredConsole" name="ToConsole" /> </targets> <rules> <logger name="*" minlevel="Info" writeTo="ToConsole" /> </rules>
加载并解析配置
private static ILogger _logger; public static void LoggerSetup() { var reader = XmlReader.Create("NLog.config"); var config = new XmlLoggingConfiguration(reader, null); //filename is not required. LogManager.Configuration = config; _logger = LogManager.GetCurrentClassLogger(); } public static void Main(string[] args) { LoggerSetup(); // Log anything you want }
在处理 MVC6 中的 MVC 工具(dnx 东西)时,对此的回答非常流畅。
为了让 NLog 与我的网络应用程序一起工作,我必须执行几个步骤: -> 非常感谢两次 NLog 讨论(here and here)
我只需要在 Startup.cs 的构造函数中添加配置设置:
public Startup(IHostingEnvironment env)
{
// Set up configuration sources.
var builder = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.AddEnvironmentVariables();
// Set up logging configuration
// from: https://github.com/NLog/NLog/issues/641
// and: https://github.com/NLog/NLog/issues/1172
var reader = XmlTextReader.Create(File.OpenRead(Path.Combine(builder.GetBasePath(),"NLog.config"))); //stream preferred above byte[] / string.
LogManager.Configuration = new XmlLoggingConfiguration(reader, null); //filename is not required.
log.Info("NLogger starting");
Configuration = builder.Build();
}
我认为这有点权宜之计,因为微软正在引入一个新的日志记录界面(我希望最终会像 SLF4J.org 在 Java).不幸的是,在我写这篇文章的时候,关于它的文档有点薄。 NLog 正在努力让自己实现新的 dnx ILoggingProvider 接口。
有关我的项目设置的其他信息
- 我的NLog.config文件位于项目根文件夹中,旁边 project.json 和 appsettings.json。我不得不做一点挖掘 在 AddJsonFile() 中查看它们如何处理路径。
- 我使用 yeoman.io 和他们的 aspnet 生成器来设置 Web 项目。
NLog 版本,感谢上面的 Lukasz Pyrzyk:
"NLog":“4.4.0-alpha1”