c# - .Net Core 2.0 控制台应用程序未通过 NLog 向 Loggly 发送消息
问题描述
我有一个需要将日志发送到 Loggly 的 .NET Core 2.0 (Topshelf) 控制台应用程序。我们已经使用 NLog、NLog.Targets.Loggly、Topshelf.NLog、loggly-csharp-config 和 loggly-csharp 实现了相同类型的应用程序。
我添加了两个额外的目标,控制台和文本。其他两个目标都工作正常。
客户 Loggly 密钥在我们具有类似结构的 .NET 4.71 应用程序中运行良好,具有相同的包。
这是我的包参考:
<ItemGroup>
<PackageReference Include="Autofac" Version="4.8.1" />
<PackageReference Include="loggly-csharp" Version="4.6.1.64" />
<PackageReference Include="loggly-csharp-config" Version="4.6.1.64" />
<PackageReference Include="NLog.Targets.Loggly" Version="4.7.0" />
<PackageReference Include="Topshelf" Version="4.1.0" />
<PackageReference Include="Topshelf.NLog" Version="4.1.0" />
编辑:从 App.config 添加更多实现代码:
<configSections>
<section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
<section name="loggly" type="Loggly.Config.LogglyAppConfig, Loggly.Config, Version=3.5.0.0, Culture=neutral, PublicKeyToken=null" />
</configSections>
...
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Trace" internalLogFile="c:\temp\nlog-internal.log">
<extensions>
<add assembly="NLog.Targets.Loggly" />
</extensions>
<variable name="DefaultLayout" value="${longdate} | ${level:uppercase=true:padding=5} | ${message} | ${exception:format=@} | ${callsite} | ${callsite-linenumber} | ${all-event-properties}" />
<targets async="true">
<target xsi:type="File" name="logfile" fileName="logs/log.txt" layout="${DefaultLayout}"/>
<target xsi:type="Console" name="console" layout="${DefaultLayout}"/>
<target xsi:type="Loggly" name="Loggly" layout="${DefaultLayout}"/>
</targets>
<rules>
<logger name="*" minlevel="Trace" writeTo="logfile,Loggly,console" />
</rules>
</nlog>
<loggly
xmlns="Loggly"
applicationName="masked"
customerToken="masked"
throwExceptions="true">
<transport logTransport="Https"/>
<tags>
<simple>
<tag value="DEV"/>
</simple>
<complex>
<tag type="Loggly.HostnameTag" formatter="{0}"/>
<tag type="Loggly.ApplicationNameTag" formatter="{0}"/>
</complex>
</tags>
</loggly>
内部日志似乎显示至少有尝试点击 Loggly。
2018-12-12 09:05:09.8816 Topshelf.Hosts.ConsoleRunHost 的调试目标(按级别):2018-12-12 09:05:09.8816 调试跟踪 => 2018-12-12 09:05:09.8816 调试调试 => 2018 -12-12 09:05:09.8816 调试信息 => 2018-12-12 09:05:09.8816 调试警告 => 2018-12-12 09:05:09.8816 调试错误 => 2018-12-12 09:05: 09.8816 调试致命 => 2018-12-12 09:05:10.1486 跟踪 AsyncWrapper(名称=Loggly):写入 1 个事件(计时器)2018-12-12 09:05:10.1486 跟踪 AsyncWrapper(名称=控制台):写入 1 个事件(计时器)2018-12-12 09:05:10.1486 跟踪 AsyncWrapper(名称=日志文件):写入 1 个事件(计时器)2018-12-12 09:05:10.1747 跟踪打开
解决方案
感谢@RolfKristensen 的评论,我尝试通过代码手动配置 csharp 客户端,它工作正常。我将不得不将配置移动到 appSettings 并让配置管理器选择它们。我猜 loggly-csharp 需要更好的文档,而不是在 .NET Core 中使用他们的配置示例。
推荐阅读
- amp-html - 我的控制台中有关于我的 amp 故事的警告
- amazon-ec2 - 如何与其他开发者共享私钥
- oracle - 尝试在 Oracle 中读取文件时出现无效的文件操作异常
- batch-file - 检查空/批处理脚本中的字符串只有空格
- openshift - 与仅 OpenShift 容器平台相比,RedHat Openshift Application Runtimes 的价值是多少?
- vue.js - 如何更新 vue-codemirror MergeView 中“origLeft”的值?
- angular - 共享模块导出
- python - 正则表达式仅用于具有固定长度且没有数字前后数字的正则表达式,并且没有使用 \b
- rust - 为什么编译器让我在一个盒子里借另一个借?
- elasticsearch - 弹性搜索使用范围查询查找字段中的差异