Nlog
通过Nlog登录到insights
要配置您的应用程序通过Nlog登录到InsightOps,您需要执行以下任务:
- 创建一个InsightOps帐户。
- 创建主机和日志以接收日志数据。
- 将插件库和适当的InsightOps Appender库添加到应用程序中。
- 在应用程序中配置插件和InsightOps appender。
- 从应用程序发送日志消息。
- 下面将进一步详细概述这些步骤。
设置
将NLog和InsightOps Target库添加到应用程序中最简单的方法是安装logentries.nlogNuget包.这个包将安装InsightOps Target库,并将自动安装NLog包作为依赖项。
配置NLog和insightsappender
一般的NLog配置超出了本自述的范围。配置NLog的详细操作请参见NLog手册的“配置”章节。
NLog允许将日志消息发送到多个目的地。在NLog术语中,这种输出目的地称为目标。目标必须是NLog.Targets.Target类的子类。InsightOps插件库提供了这样一个目标组件,专门设计用于以高效的方式向InsightOps发送日志消息。
InsightOps目标是按照正常的方式使用元素配置并添加到你的NLog配置中:
1.
InsightOps目标有两种不同配置的设置:
- 日志设置
- InsightOps凭证
NLog日志设置
属性的子元素指定日志记录设置,以确定目标如何操作
- 级别:应包括的最低NLog日志记录级别。日志级别低于此级别的所有日志消息都将被过滤掉,而不会发送到InsightOps。
- Debug:设置为true将内部调试消息发送到Nlog内部日志记录器。
- UseSsl:设置为true,使用SSL向InsightOps发送数据(更多信息见下面)。
- 布局:用于在将日志消息发送到日志条目之前格式化日志消息的布局。
1.< configSections >2.<节name = " nlog " type = " NLog.Config。ConfigSectionHandler, NLog " / >3.< / configSections >4. 5.< >扩展6.<添加组装= " R7Insight。NLog " / >7.> < /扩展8.<目标>9 10layout=“${date:format=ddd-MMM-dd}${time:format=HH:mm:ss}${date:format=zzz-yyyy}${logger}:${LEVEL},${message}”/>1112<规定>13. txt 14> < /规则15< / nlog >
NLog InsightOps凭证
洞察凭据确定发送到哪个主机并记录日志消息。以下设置构成了insighttops凭据:
令牌:要向其发送消息的日志的唯一令牌GUID。这在使用较新的基于令牌的日志记录时适用。AccountKey和Location:要向其发送消息的帐户密钥和位置。这在使用较旧的HTTP PUT日志记录时适用(有关更多信息,请参阅下文)。与日志记录设置(通常为给定应用程序配置一次)不同,InsightOps凭据通常根据应用程序的环境或实例而不同。例如,您的应用程序可能同时在测试环境和生产环境中运行,您很可能希望这两个环境有单独的日志记录目标。
因此,与配置设置相比,可以更灵活地指定insight tops凭据。你有三个选择:
将凭据指定为元素的子元素(如果不需要额外的灵活性)。属性中的设置指定凭据
如果该值作为Windows Azure角色配置设置存在,则使用该值。属性中的设置,则不存在该值
1.
下面是一个如何在中指定凭据的示例
1.< appSettings >2.<添加关键= "洞察力。令牌“价值= " bb61600f f766 - 451 e - b55f - 9204 f536a79f " / >3.
下面是一个如何将凭证指定为Windows Azure角色配置设置的示例:
1.. 2.<角色名称= " MyRole " >3.<实例数= " 2 " / >4.< ConfigurationSettings >5.<设置name = "洞察力。令牌“价值= " bb61600f f766 - 451 e - b55f - 9204 f536a79f " / >6.< / ConfigurationSettings >7.8.< / ServiceConfiguration >
使用NLog在Web应用程序中记录上下文信息
在web应用程序中,使用NLog的内置功能为每个日志消息记录额外的上下文信息通常是有帮助的。它与InsightOps的日志消息索引器结合使用时工作得特别好,该索引器可以识别传入日志消息中的任何键值对,并为这些键值对建立索引,以进行快速搜索和检索。
下面是一个示例,说明如何将额外的特定于web的上下文日志信息以InsightOps解析器能够识别和索引的格式添加到InsightOps appender的布局中:
1.<目标名称=“logentries”类型=“洞察力”2.${date:format=ddd MMM dd} ${time:format=HH:mm:ss} ${date:format=zzz yyyy} ${logger} ${LEVEL} ${message}${newline}SessionId='${aspnet-sessionid}';用户名= " $ {aspnet-user-identity} ';${换行符}" / >
基于符号的日志
我们推荐的向insighttops发送消息的方法是通过令牌TCP端口10000。要使用此方法,请选择令牌TCP作为源类型当在InsightOps UI中创建一个新日志,然后将打印在日志旁边的令牌粘贴到Logentries的值中。令牌凭证设置。
使用NLog通过SSL/TLS发送日志数据
通过在appender定义中将useSsl日志设置为true, insighttops appender支持使用上述两种日志记录方法通过SSL/TLS发送日志数据。这样更安全,但可能对性能有影响。
使用NLog从应用程序发送日志消息
安装和配置完成后,您就可以向InsightOps发送日志数据了。
在你想要登录的每个类中,如果还没有的话,在顶部添加以下using指令:
1.使用NLog;
然后在类级别创建一个记录器对象:
private static readonly Logger m_logger = LogManager.getCurrentClassLogger();这将创建一个与当前类同名的日志记录器,它将根据您的代码命名空间层次结构组织NLog配置层次结构。这样既可以清晰地读取日志,又可以方便地为代码的不同区域配置不同的日志级别。
在那个类的代码中,你可以正常使用NLog日志,它会记录到InsightOps。
例子:
1.loggerLe。Info(“这是一个测试消息”);2.loggerLe.Info(“这是另一条测试消息”);3.String x = System.Console.ReadLine();
完整的代码示例:
1.使用NLog;2.使用系统;3.使用System.Collections.Generic;4.使用来;5.使用text;6.使用System.Threading.Tasks;7.名称空间logentrieslog4netsamplepp8.{9班级计划10{11private static readonly ILog loggerLe=LogManager.GetLogger(typeof(Program));1213static void Main(string[] args)14{15loggerLe。Info(“这是一个测试消息”);16loggerLe.Info(“这是另一条测试消息”);17String x = System.Console.ReadLine();18}19}20.}
故障排除NLog
默认情况下,InsightOps目标将自己的调试消息记录到NLog的内部记录器。检查这些调试消息有助于找出InsightOps日志记录无法按预期工作的原因。
关闭NLog的日志
InsightOps目标保持一个日志消息的内部队列,并使用一个后台线程与InsightOps系统通信,该线程不断地从这个队列发送消息。因此,当应用程序关闭时,一些日志消息可能仍然留在队列中,在应用程序域关闭之前没有时间发送到InsightOps。
为了解决这个潜在的问题,考虑将下面的代码添加到应用程序中,这将暂时阻止InsiTopAppEnter完成队列中的所有消息的日志记录。AreAllQueuesEmpty()阻塞指定的时间,然后返回true或false,具体取决于在方法返回之前队列是否有时间变为空。
1.公共空间Application_End ()2.{3.//这将给LE后台线程一些时间来完成向InsightOps发送消息。4.var num等待= 3;5.而(!LogentriesCore.Net.AsyncLogger.AreallQueuesPty(TimeSpan.FromSeconds(5))&&numWaits>0)6.numWaits——;7.}