.Net Core 2.0控制台应用程序未通过NLog

时间:2018-12-11 23:12:18

标签: c# .net-core nlog loggly

我有一个.NET Core 2.0(Topshelf)控制台应用程序,需要将日志发送到Loggly。我们已经使用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 Trace   AsyncWrapper(Name = console):编写1个事件(计时器)2018-12-12   09:05:10.1486跟踪AsyncWrapper(名称=日志文件):写入1个事件   (计时器)2018-12-12 09:05:10.1747跟踪打开

1 个答案:

答案 0 :(得分:1)

由于@RolfKristensen的评论,我尝试通过代码手动配置csharp客户端,它运行良好。我必须将配置移至appSettings并让配置管理器来接管。我想loggly-csharp需要更好的文档,以免在.NET Core中不使用其配置示例。