Tag: nlog

NLog – 将NULL写入可选数据库列

我正在使用NLog登录ASP.Net应用程序并使用Microsoft Sql Server的数据库目标。 我有一些可选的记录参数,并不总是指定。 我希望这些在没有提供时写为null,但NLog似乎总是把它们写成空字符串。 有没有办法将其配置为将null写为默认值? 参考: https : //github.com/nlog/NLog/wiki/Database-target

使用NLog的Ninject记录器

我刚开始学习Ninject但是遇到了记录器的问题。 我目前有一个控制器,它有一个服务和记录器注入到构造函数中,如下所示: public ToolsController(IToolsService toolsService, ILogger logger) { logger.Info(“ToolsController Created”); this.toolsService = toolsService; this.logger = logger; } 问题出在构造函数中的logger.Info行(例如),它似乎使用了错误的记录器,因此它打印出的记录器名称不正确。 Tools.IGeocodeImporter: ToolsController Created 以下是如何设置获取记录器名称: kernel.Bind().To().WithConstructorArgument(“name”, x => x.Request.ParentContext.Request.Service.FullName); 任何意见,将不胜感激。

使NLog记录器具有不同的配置

在NLog中是否可以创建具有不同配置的多个记录器? 我有一个组件,每次实例化必须将所有事件记录到与新实例相关的不同文件。 NLog可以实现吗? 如果没有,有这样的日志框架吗?

如何配置NLog写入数据库?

我正在尝试让NLog写入数据库,但是当我尝试调试时,我的当前代码会引发exception,例外是:’NotifyIcon.Program’的类型初始值设定项引发exception。 我的NLog配置文件代码如下,因为这似乎是导致问题,因为它是我改变的唯一代码。 任何和所有的帮助将不胜感激=]

NLog可以通过c#扩展方法保存呼叫站点信息吗?

编辑:虽然类似,但这与使用NLog包装器的问题不同。 扩展方法增加了另一个间接级别,这使得即使是正确的包装器也会报告错误的调用点 我目前在NLog周围使用了一个日志包装器,我使用他们在源代码中显示的技巧来获取准确的callsite信息。 对于我开始的新项目,我想创建一个更简单的类,所以我只是实现了类似下面的接口: public interface ILogger { void Log( LogEntry entry ); } 然后我创建了一个扩展方法类,如: public static class LoggerExtensions { public static void Debug( this ILogger logger, string format, params object[] args) { logger.Log( new LogEntry( LogLevel.Debug, format, args ) ); } … } 问题是NLog然后将调用点显示为扩展方法而不是扩展方法的调用者。 我做了一些搜索,但找不到任何关于NLog和扩展方法。 在这种情况下是否可以修复呼叫站点信息? 或者是在接口本身中包含Debug,Info等function的唯一方法?

生产线上的行号在NLog日志中消失

我通过使用$ {callsite}参数配置了NLog布局以获得方法名称和行号,并且它在本地运行良好,如下所示。 Application_Start(Global.asax.cs:33) 但它正在改变为Application_Start而没有生产中的行号。 我想这是因为它不能访问没有.pdb文件的行号,但我使用的是.NET 4.5,它可以通过没有.pdb文件的调用者属性访问行号。 我知道NLog没有为.NET 4.5优化自己。 有没有办法使用NLog为.NET 4.5生成行号?

使用NLog将Logger Name转换为Excel文件

感谢Rolf在这个问题中的评论: NLog in C#的严重性和类别 我能够将日志消息的类别记录到文本文件中(例如“Thermal”或“Database”或“Mechanical”。我只是通过将名称传递给“GetLogger”方法来完成此操作。 public MainWindow() { InitializeComponent(); var logger = NLog.LogManager.GetCurrentClassLogger(); logger.Info(“Hello World”); (NLog.LogManager.GetLogger(“Database”)).Info(“Here is a DB message”); (NLog.LogManager.GetLogger(“Thermal”)).Info(“Here is a Thermal message”); } 文本文件如下所示: 2018-05-13 17:40:47.7442|INFO|NLogExperiments.MainWindow|Hello World 2018-05-13 17:40:50.3404|INFO|Database|Here is a DB message 2018-05-13 17:40:50.3404|INFO|Thermal|Here is a Thermal message 这很不错。 我可能会在一个单独的问题中询问如何重新格式化它。 现在我想将这些消息放入CSV(Excel)文件中。 我正在使用: 但输出只是: time,level,name,message,codeLine 2018-05-13 17:40:47.7442,Info,,Hello World, 2018-05-13 17:40:50.3404,Info,,Here is a […]

Nlog给出exception可能的解释是缺少零arg和单个arg Common.Logging.Configuration.NameValueCollection构造函数

我将nlog添加到我的应用程序和测试项目中。 它们都是同一解决方案的一部分。 从内部应用程序nlog工作。 但是从测试项目得到以下exception: Unable to create instance of type Common.Logging.NLog.NLogLoggerFactoryAdapter. Possible explanation is lack of zero arg and single arg Common.Logging.Configuration.NameValueCollection constructors 我的Nlog配置如下: packages.congfig文件

NLog – 数据库目标的运行时参数

我正在尝试向我的数据库日志目标添加一些自定义。 在我的NLog.config中我有这个: 在我的C#代码中我有这个: protected override void updateBeforeLog(LogEventInfo info) { info.Properties[“dbDatabase”] = “TempDB”; info.Properties[“dbUserName”] = “username”; info.Properties[“dbPassword”] = “password”; info.Properties[“dbHost”] = “SERVER\\SQLSERVER”; info.Properties[“commandText”] = “exec InsertLog @LogDate, @LogLevel, @Location, @Message”; info.Parameters = new DatabaseParameterInfo[] { new DatabaseParameterInfo(“@LogDate”, Layout.FromString(“${date:format=yyyy\\-MM\\-dd HH\\:mm\\:ss.fff}”)), new DatabaseParameterInfo(“@LogLevel”, Layout.FromString(“${level}”)), new DatabaseParameterInfo(“@Location”, Layout.FromString(“${event-context:item=location}”)), new DatabaseParameterInfo(“@Message”, Layout.FromString(“${event-context:item=shortmessage}”)) }; log.Log(info); } 但是我收到一条SQL错误,上面写着“必须声明标量变量”@LogDate“”。 属性正常,因为连接成功。 但由于某种原因,参数不会“绑定”到命令中的标量变量。 如果我在NLog.config文件中手动创建参数,它可以完美地工作: 但这违背了能够在运行时自定义commandText和参数值的全部目的。 […]

NLog控件到现有的RichTextBox Windows窗体

下面是我的NLog配置,我想在Form1中将日志加载到名为rtMessage的现有RichTextBox中,但是NLog将创建一个新窗口,其中包含加载到RichTextBox中的日志消息: 谢谢。