标签: nlog

NLog无法在发布模式下工作

我正在使用NLog来记录我的asp.net mvc(C#)应用程序中的异常.

NLog无法在发布模式下工作.在调试模式下运行时也一样.

可能是什么问题?有没有解决这个问题?

c# asp.net-mvc nlog

14
推荐指数
2
解决办法
6081
查看次数

ASP.NET MVC2 + Ninject + NLog(+共享主机?)= NullReferenceException

我有一个基于Tekpub Starter Site的MVC2应用程序,所以它使用Ninject进行依赖注入,NLog用于日志记录,以及各种各样的其他库.据我所知,正是这些导致了我的问题.

使用ASP.NET开发服务器(Cassini)在我的PC上工作得非常好但是当我部署到服务器(这是一个廉价的共享主机交易)时,我得到一个NullReferenceException似乎与Ninject实例化记录器有关.

这是我的Global.asax.cs的相关位

protected override void OnApplicationStarted() {
    Logger.Info("App is starting"); // <-- I think this is what's causing the problem

    RegisterRoutes(RouteTable.Routes);
    //MvcContrib.Routing.RouteDebugger.RewriteRoutesForTesting(RouteTable.Routes);
    RegisterAllControllersIn(Assembly.GetExecutingAssembly());
    SetEngines();
}

protected override IKernel CreateKernel() {
    return Container;
}

internal class SiteModule : NinjectModule {
    public override void Load() {
        Bind<ILogger>().To<NLogLogger>();
        // and a couple of others...
    }
}

protected void Application_End() {
    Logger.Info("App is shutting down");
}

protected void Application_Error() {
    Exception lastException = Server.GetLastError();
    Logger.Fatal(lastException);
}

public ILogger Logger …
Run Code Online (Sandbox Code Playgroud)

dependency-injection shared-hosting ninject nlog asp.net-mvc-2

14
推荐指数
2
解决办法
4143
查看次数

使用包装器时,Nlog Callsite错误

我正在使用NLog进行日志记录,我使用包装器来调用日志方法,我的问题是:如果我尝试打印有关调用site(${callsite})的信息,它会打印包装器方法而不是导致记录器记录的原始方法.

有没有办法获得调用包装器方法的原始方法?

c# logging nlog

14
推荐指数
1
解决办法
6683
查看次数

我可以将NLog配置为在达到一定限制后修剪日志吗?

可以将NLog配置为在日志文件达到特定文件大小后自动修剪/修剪日志文件吗?

.net nlog

14
推荐指数
1
解决办法
8684
查看次数

NLog:使用空格格式化日志级别

我正在使用NLog进行日志记录.目前我的Layout-String是:

"${date:format=dd.MM.yyyy HH\\:mm\\:ss,fff} | ${level:uppercase=true} | ${message}"
Run Code Online (Sandbox Code Playgroud)

这会产生以下日志:

18.12.2013 11:23:14,834 | INFO | this is an info
18.12.2013 11:23:14,835 | TRACE | this is a trace
Run Code Online (Sandbox Code Playgroud)

我现在想要的是格式化"$ level"以填充Whitespaces,使其看起来像一个包含5个字符的表.

我想拥有:

18.12.2013 11:23:14,834 | INFO  | this is an info
18.12.2013 11:23:14,835 | TRACE | this is a trace
Run Code Online (Sandbox Code Playgroud)

我没有发现任何遗憾......任何人都可以帮忙吗?

format whitespace nlog

14
推荐指数
2
解决办法
4798
查看次数

使用当前日期和时间创建NLog文件而不缓存它,保持存档文件名相同

我正在使用NLog进行一些日志记录,我遇到了归档和文件名的问题.

我正在代码中创建日志记录配置(我正在编写一个包装器来公开一些特定的功能),并且我已经FileTarget使用这些选项创建了对象:

this._fileTarget.FileName = "${date:format=yyyy-MM-dd hh.mm.ss}.log";
this._fileTarget.ArchiveAboveSize = Math.Pow(1024, 2) * 5; //5MB
this._fileTarget.ArchiveNumbering = ArchiveNumberingMode.Date;
this._fileTarget.ArchiveEvery = FileArchivePeriod.Day;
this._fileTarget.ArchiveDateFormat = "yyyy-MM-dd hh.mm.ss";
Run Code Online (Sandbox Code Playgroud)

我不确定为什么NLog会这样做,但是文件名布局会每秒创建一个新的日志文件,而不是仅仅使用文件名,直到存档期间结束.

我将缓存的目标包装器添加到文件名中:

this._fileTarget.FileName = "${cached:cached=true:inner=${date:format=yyyy-MM-dd hh.mm.ss}.log}";
Run Code Online (Sandbox Code Playgroud)

但是所有购买的东西都是一个现在永远不会改变的文件名,在归档时看起来像这样

2014-12-03 12.00.00.2014-12-03 12.00.00.log
2014-12-03 12.00.00.2014-12-03 12.10.00.log
etc...
Run Code Online (Sandbox Code Playgroud)

是否可以告诉NLog只根据文件大小和日期归档文件,并忽略归档编号和日期格式?我正在尝试生成日志文件,其名称是创建时间的时间戳,其中新文件仅在特定大小或每天创建.

编辑: 这是我想要实现的目标:

在申请开始

  1. "yyyy-MM-dd hh.mm.ss".txt使用当前时间戳创建具有文件名的日志文件(示例 - >"2014-04-29 11:11:11.txt")
  2. 应用程序会在该文件中记录一段时间,直到它为止
    • 变得太大(超过定义的限制)或
    • 存档时间过去了(在我的情况下,这是一天)
  3. 然后记录器停止写入在1.("2014-04-29 11.11.11.txt")中创建的文件,并且不重命名它或以其他方式添加顺序/滚动数字或日期格式.
  4. 重复步骤1-3直到时间结束.

离开我的Log文件夹看起来像这样:

Logs
|
|> 2014-12-10 12:50:50.txt    (1024 kb)
|> 2014-12-10 12:50:55.txt    (1020 kb)
|> 2014-12-10 12:51:01.txt    (1024 kb)
|> 2014-12-10 12:51:10.txt    (1003 kb)  
|> 2014-12-10 …
Run Code Online (Sandbox Code Playgroud)

c# nlog

14
推荐指数
2
解决办法
6655
查看次数

如何使用NLog登录多个目标?

我正在使用NLog,我想同时登录RichTextBox和File.我想以编程方式配置Logger,而不是使用xml配置文件.

以下代码仅记录到最后一个目标(在本例中为File).有人可以帮忙吗?

RichTextBoxTarget t1 = new RichTextBoxTarget();
t1.Layout = "${date} ${message}";
t1.ControlName = "rtb_log";
t1.FormName = "MainForm";
NLog.Config.SimpleConfigurator.ConfigureForTargetLogging(t1, LogLevel.Debug);

FileTarget t2 = new FileTarget(); 
t2.Layout = "${date} ${level} ${message}"; 
t2.FileName = "${basedir}/Logs/today.log"; 
t2.KeepFileOpen = false; 
t2.Encoding = "iso-8859-2"; 
NLog.Config.SimpleConfigurator.ConfigureForTargetLogging(t2, LogLevel.Trace); 

Logger logger = LogManager.GetLogger("MyLogger");
Run Code Online (Sandbox Code Playgroud)

c# configuration logging nlog

13
推荐指数
2
解决办法
7336
查看次数

NLog内部日志不能与ASP.Net MVC一起使用

我有一个问题,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"
  throwExceptions="true"
  internalLogFile="${basedir}/App_Data/NLog.log"
  internalLogLevel="Trace">

   <targets>
      <target name="debug"
              xsi:type="File" 
              fileName="${basedir}/App_Data/Site.log" />
   </targets>

   <rules>
      <logger name="*"
              writeTo="debug" />
   </rules>
</nlog>
Run Code Online (Sandbox Code Playgroud)

目标"debug"运行良好,但是如果我将它设置为例如"D:/NLog.log",则internalLogFile才有效.

知道为什么会这样吗?

asp.net-mvc nlog

13
推荐指数
2
解决办法
7919
查看次数

NLog配置为自动记录所有异常?

有没有办法配置NLog自动记录我的应用程序可以发送的所有异常?目前我将去所有TRY/CATCH块并在CATCH中手动添加日志记录 - 但如果我错过了一些怎么办?如果将来其他人做了什么呢?

有没有办法告诉NLog始终记录所有异常?特别是一些没有被捕获并可能导致弹出窗口?

c# nlog

13
推荐指数
1
解决办法
7700
查看次数

将当前用户添加到NLog输出

我想在NLog输出的每一行添加一个字符串.逻辑保持不变,尝试获取当前用户,如果成功,则将当前用户添加到输出.

我知道每次如何实现它,但我想在一个地方设置这个模板,而不是在每次写作时重复它.

c# nlog

13
推荐指数
1
解决办法
7704
查看次数