标签: nlog

我如何格式化我的 nLog 布局

我的 nLog 布局如下所示

  fileTarget.Layout =  "${date}  ${message}";
Run Code Online (Sandbox Code Playgroud)

在我的代码中,我记录如下

  logger.Info("ORDER UPDATE",order.Name,order.Instrument,order.OrderState);
Run Code Online (Sandbox Code Playgroud)

但是它只记录第一个字符串,例如。

11/22/2012 22:37:16  ORDER UPDATE
11/22/2012 22:37:16  ORDER UPDATE
11/22/2012 22:37:16  ORDER UPDATE
11/22/2012 22:37:16  ORDER UPDATE
Run Code Online (Sandbox Code Playgroud)

我很确定我的布局中遗漏了一些东西,但不知道如何修复它。有人可以指出我的错误吗?

c# nlog

2
推荐指数
1
解决办法
2390
查看次数

NLog 4.0 忽略规则的最终属性

我的应用程序使用NLog.config如下所示配置的 NLog 。它还使用 RavenDB 数据库,该数据库默认使用活动的 NLog 设置进行日志记录。

它会产生大量污染日志的 DEBUG 和 INFO 消息。我确实想记录 ERROR 和 WARN 消息。RavenDB 创建的所有记录都来自以Raven.

我创建了如下所示的规则。基本上有一个最终规则可以防止来自 Raven.* 命名空间的 INFO/DEBUG 消息写入日志文件。在我将 NuGet 包升级到 NLog 4.0 之前,一切都运行良好。现在所有 RavenDB 消息都写入日志文件。

这是错误还是 NLog 版本之间发生了一些配置更改?

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <targets>
    <target name="file" xsi:type="AsyncWrapper" queueLimit="1000" overflowAction="Discard">
      <target
        name="file"
        xsi:type="File"
        layout="${longdate} - ${level:upperCase=true} - ${identity} - ${logger} - ${message}${onexception:inner=${newline}${exception:format=tostring}${newline}}"
        fileName="D:/Logs/AppName/${shortdate}.log" />
    </target>
  </targets>
  <rules>
    <logger name="Raven.*" writeTo="file" minlevel="Warn" final="true" />
    <logger name="*" writeTo="file" minlevel="Debug" />
  </rules> …
Run Code Online (Sandbox Code Playgroud)

nlog

2
推荐指数
1
解决办法
1412
查看次数

如何配置 nlog 以在 FileTarget 中使用 IHostingEnvironment.ContentRootPath

我正在尝试为我的 asp.net 核心应用程序添加 NLog。所以我完全按照这里的描述配置它https://github.com/NLog/NLog.Extensions.Logging。我还添加了https://github.com/NLog/NLog.Web和默认配置。到目前为止一切顺利,一切都按预期工作。

现在我想将我的日志文件存储在示例c:\temp\nlog-own-${shortdate}.log中指定的硬编码文件夹中,而不是存储在取决于当前项目的文件夹中。在我以前的 ASP.NET 项目中,我使用了类似这样的东西${basedir}\App_Data\Logs\nlog-own-${shortdate}.log。现在它也可以工作,但将文件放在 bin 目录中。但我想配置将这些文件放在IHostingEnvironment.ContentRootPath文件夹中。基本上我想要这样的东西

    private static Logger Logger = LogManager.GetCurrentClassLogger();
    private IHostingEnvironment _HostingEnvironment;
    public UserController(IHostingEnvironment env)
    {
        _HostingEnvironment = env;
    }

    public IActionResult Index()
    {
        var fileTarget = Logger.Factory.Configuration.FindTargetByName<NLog.Targets.FileTarget>("ownFile-web");
        fileTarget.FileName = new SimpleLayout(
            @"${basedir}\App_Data\Logs\nlog-own-${shortdate}.log"
                .Replace("${basedir}", _HostingEnvironment.ContentRootPath)
        );
        Logger.Info("Index page says hello");

        return View(new UserListArgs());
    }
Run Code Online (Sandbox Code Playgroud)

但以更优雅的方式。

nlog asp.net-core

2
推荐指数
1
解决办法
2204
查看次数

如何在 NLog.Config 中使用来自不同类的变量?

我有一个static包含路径的字段的类。

public static class PfadSammlung
{
    public static string Path_Example = @"C:\temp";
}
Run Code Online (Sandbox Code Playgroud)

如何在NLog.Config文件中使用此路径来指定目标的文件名?

public static class PfadSammlung
{
    public static string Path_Example = @"C:\temp";
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

c# config nlog path

2
推荐指数
1
解决办法
7570
查看次数

NLog:NLog 配置在哪里?

我这样编码:

private static readonly ILogger Logger = LogManager.GetCurrentClassLogger();

public MyClass()
{
    Console.Write("lol");
    Logger.Debug("Debug test...");
    Logger.Error("Debug test...");
    Logger.Fatal("Debug test...");
    Logger.Info("Debug test...");
    Logger.Trace("Debug test...");
    Logger.Warn("Debug test...");
}
Run Code Online (Sandbox Code Playgroud)

什么都没有显示..所以我被告知去添加<targets>到配置文件中,事情是..配置文件在哪里?谷歌,文档或任何类似的东西都没有帮助我......

c# nlog

2
推荐指数
1
解决办法
3558
查看次数

如何在运行时使 NLog 线程安全地写入单独的文件目标?

我有一个运行多个线程(~50 个)的应用程序,每个线程从数据库中获取要处理的带锁的付款,然后对其进行处理。
但是,50 个线程会使日志不可读、混乱且文件大小庞大。
现在,我想让 NLog 为每个付款 ID 写入一个单独的文件,以便所有付款处理历史记录都存储在一个文件中。

NLog 配置文件:

<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <targets>
    <target name="file" xsi:type="AsyncWrapper" queueLimit="10000" overflowAction="Discard">
      <target name="f" xsi:type="File" fileName="C:\LogFiles\Immediate\${shortdate}.server.log" layout="${longdate}|${level}|${processid}|${threadid}|${level:upperCase=true}|${callsite:className=false}|${message}" encoding="utf-8"/>
    </target>
  </targets>
  <rules>
    <logger name="*" minlevel="Debug" writeTo="file"/>
  </rules>
</nlog>
Run Code Online (Sandbox Code Playgroud)

我现在的代码:

private static readonly ILogger Logger = LogManager.GetCurrentClassLogger(); // "2017-07-20.log"

while (!_cancellationToken.IsCancellationRequested)
{
    using (var session = _connectionFactory.GetSession())
    {
        AcquirePaymentWithUpdlockReadpast(session, 
            Logger,  // "2017-07-20.log" 
            payment => {
                if (payment == null)
                    return;

                Logger.Debug($"Payment {payment.Id} has been acquired for processment");

                ProcessPayment(session, Logger, payment); …
Run Code Online (Sandbox Code Playgroud)

c# multithreading nlog

2
推荐指数
1
解决办法
1083
查看次数

如何在 NLog 中打开和关闭特定级别的日志记录

我在我的应用程序中使用 NLog。我想创建一个开关来打开和关闭特定的记录器级别。

  <rules>
    <logger name="*" minlevel="Debug" writeTo="f" />
    <logger levels="Error,Warn,Fatal,Debug,Info" name="CustomLogger" writeTo="database"/>
  </rules>
Run Code Online (Sandbox Code Playgroud)

如何关闭特定记录器级别的日志记录。我不想将其从下面的行中删除。

<logger levels="Error,Warn,Fatal,Debug,Info" name="CustomLogger" writeTo="database"/>
Run Code Online (Sandbox Code Playgroud)

如何Info使用类似以下内容打开和关闭日志记录:

internalLogLevel="Off"
Run Code Online (Sandbox Code Playgroud)

logging error-logging nlog

2
推荐指数
1
解决办法
9663
查看次数

在NLog目标中使用$ {basedir}可以按该名称创建一个文件夹

我在Asp.Net核心2.0项目中使用NLog.Web.AspNetCore.如果我使用以下目标:

<target xsi:type="File" name="allfile" fileName="${basedir}/nlog-all-${shortdate}.log"
Run Code Online (Sandbox Code Playgroud)

它在我的应用程序的ContentRoot文件夹中创建一个名为"$ {basedir}"的空文件夹.它将日志文件放在bin\Debug \netcoreapp2.0中.

为什么不替换$ {basedir}?如果我使用日志文件夹的完整路径,它工作正常.

我应该补充一点,我在<nlog>元素中的nlog.config中也有以下内容:

internalLogFile="${basedir}/internal-nlog.txt"
Run Code Online (Sandbox Code Playgroud)

当存在内部Nlog错误时,它会在名为"$ {basedir}"的文件夹中写入此文件.

nlog asp.net-core

2
推荐指数
1
解决办法
2317
查看次数

Azure Application Insights 中没有使用 Microsoft.ApplicationInsights.NLogTarget 的日志条目

目标:将日志条目从 NLog 转发到 Azure Application Insights。从:https : //github.com/Microsoft/ApplicationInsights-dotnet-logging

我创建了一个非常基本的控制台应用程序:

TelemetryConfiguration.Active.InstrumentationKey = "my instrumentation key";

Logger logger = LogManager.GetLogger("Example");
logger.Info("Hello World");

Console.ReadLine();
Run Code Online (Sandbox Code Playgroud)

使用以下 app.config:

<configuration>
  <configSections>
    <section name="nlog" type="NLog.Config.ConfigSectionHandler, NLog" />
  </configSections>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.1" />
  </startup>
  <nlog xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" throwExceptions="true">
    <extensions>
      <add assembly="Microsoft.ApplicationInsights.NLogTarget" />
    </extensions>
    <targets>
      <target type="ApplicationInsightsTarget" name="aiTarget" layout="${longdate} ${level} ${threadid} ${logger} ${message} ${exception:format=ToString}" />
      <target name="console" xsi:type="ColoredConsole" layout="${longdate} ${level} ${threadid} ${logger} ${message} ${exception:format=ToString}" />
    </targets>
    <rules>
      <logger name="*" minlevel="Trace" writeTo="aiTarget" />
      <logger name="*" minlevel="Trace" writeTo="console" />
    </rules> …
Run Code Online (Sandbox Code Playgroud)

.net c# nlog azure azure-application-insights

2
推荐指数
1
解决办法
1092
查看次数

NLog 在日志文件中包含 EventId

.NETCore 2.2 中的 ILogger 有一个 EventId 参数。

public static void LogError(this ILogger logger, EventId eventId, string message, params object[] args);
Run Code Online (Sandbox Code Playgroud)

如何让 NLog 将其输出到日志文件?

我的 nlog.config:

public static void LogError(this ILogger logger, EventId eventId, string message, params object[] args);
Run Code Online (Sandbox Code Playgroud)

问题:EventId 永远不会出现在日志文件中

    |   | 2019-06-21 13:13:44.8984 INFO RMD_LPCB_Web_Portal.Program.Main  init main
    |   | 2019-06-21 13:13:48.5197 WARN Microsoft.AspNetCore.HttpsPolicy.Internal.HttpsLoggingExtensions.FailedToDeterminePort  Failed to determine the https port for redirect.
    |   | 2019-06-21 13:13:54.3064 INFO RMD_LPCB_Web_Portal.Pages.Account.LoginModel+<AuthenticateEmail>d__20.MoveNext  LOGIN : Jesse.lay@state.nm.us IP: ::1 SESSION : f52d9758-bc32-7131-d7d4-7ec5224853f5
    |   | 2019-06-21 13:13:54.4070 …
Run Code Online (Sandbox Code Playgroud)

c# nlog asp.net-core

2
推荐指数
1
解决办法
1326
查看次数