Tag: logging

对于C#日志记录,如何以最小的开销获取调用堆栈深度?

我已经为Log4net创建了一个包装器(我可能会支持NLog;我还没有决定),并且我缩进了记录的消息结果以给出调用结构的概念。 例如: 2011-04-03 00:20:30,271 [CT] DEBUG – Merlinia.ProcessManager.CentralThread.ProcessAdminCommand – ProcStart – User Info Repository 2011-04-03 00:20:30,271 [CT] DEBUG – Merlinia.ProcessManager.CentralThread.StartOneProcess – User Info Repository 2011-04-03 00:20:30,411 [CT] DEBUG – Merlinia.ProcessManager.CentralThread.SetProcessStatus – Process = User Info Repository, status = ProcStarting 2011-04-03 00:20:30,411 [CT] DEBUG – Merlinia.ProcessManager.CentralThread.SendProcessStatusInfo 2011-04-03 00:20:30,411 [CT] DEBUG – Merlinia.CommonClasses.MhlAdminLayer.SendToAllAdministrators – ProcessTable 2011-04-03 00:20:30,411 […]

Log4Net:以2字节语言登录(日文,中文等)

我想使用log4net以2字节语言(中文,日文等)将数据记录到文件中。 如何正确配置log4net来做到这一点?

IIS7,RewritePath和IIS日志文件

我在IIS7上运行的ASP.NET 3.5应用程序中使用Context.RewritePath()。 我在应用程序BeginRequest事件中做它,一切工作文件。 / sports的请求被正确地重写为default.aspx?id = 1,依此类推。 问题是在我的IIS日志中,我看到了对/Default.aspx?id=1的GET请求,而不是/ sports。 这种代码在IIS6下完美运行。 由于必须实现某些业务逻辑,因此不能使用Microsoft Rewrite模块。 谢谢。 编辑: 看来我的处理程序太早了,但是如果我将逻辑移到后来的事件中,那么整个重写的东西都不起作用(为时已晚,StaticFileHandler会收到我的请求)。 我用谷歌搜索和谷歌搜索,问道,不敢相信没有人有这个问题? 编辑: 哎呀! 这是我在IIS论坛上发现的: “这是因为在集成模式下,IIS和asp.net共享一个公共管道,现在IIS可以看到RewritePath,而在IIS6中,它甚至没有被IIS看到 – 你可以通过使用经典模式来解决这个问题IIS6“。 最后更新 :请看下面我的答案 ,我在生产环境中使用了一年多的时间后对结果进行了更新。

Nlog给出exception可能的解释是缺少零arg和单个arg Common.Logging.Configuration.NameValueCollection构造函数

我将nlog添加到我的应用程序和测试项目中。 它们都是同一解决方案的一部分。 从内部应用程序nlog工作。 但是从测试项目得到以下exception: Unable to create instance of type Common.Logging.NLog.NLogLoggerFactoryAdapter. Possible explanation is lack of zero arg and single arg Common.Logging.Configuration.NameValueCollection constructors 我的Nlog配置如下: packages.congfig文件

哪里有企业库4.1记录器,日志?

我是新手使用记录器。 我已经使用配置向导完成了配置,但我无法理解它在哪里记录消息。 我甚至看到app.config文件但找不到任何日志源。 请指导我在哪里记录日志以及如何查看日志。 这是我的配置文件: 谢谢

将Application Insights与ILoggerFactory一起使用

我正在尝试将exception记录到Application Insights。 我通过直接调用TelemetryClient.TrackException成功完成了这项工作。 但是,我想在我的代码中抽象出来,以防我将来想要登录其他平台,所以我想只关注ILogger接口。 我发现你可以使用ILoggerFactory.AddApplicationInsights ( 这里实现),但不管我做了什么,我都没有看到日志在ApplicationInsights中出现。 以下是我的代码: Startup.cs IConfigurationRoot Configuration { get; set; } ILoggerFactory LoggerFactory { get; set; } IServiceProvider ServiceProvider { get; set; } public Startup( IHostingEnvironment hostingEnvironment, ILoggerFactory loggerFactory ) { this.LoggerFactory = loggerFactory; string configurationFilePath = “abc.json”; this.Configuration = new ConfigurationBuilder() .SetBasePath( hostingEnvironment.ContentRootPath ) .AddJsonFile( configurationFilePath, optional: true, reloadOnChange: true […]

IronPython ImportException:没有名为logging的模块

我让ironpython在mono上工作正常,但它没有导入logging模块。 执行此代码: ScriptEngine engine = Python.CreateEngine(); dynamic logging = engine.ImportModule(“logging”); 产生以下错误: IronPython.Runtime.Exceptions.ImportException: No module named logging 我包含的IronPython程序集是最新的:IronPython.Modules.dll,Microsoft.Dynamic.dll,Microsoft.Scripting.dll,Microsoft.Scripting.Metadata.dll。 如何在Ironpython中使用日志记录模块?

如何配置log4net以使对象的属性可以映射到日志输出?

我试图提供一种方法来记录我们的Flex客户端中发生的错误,方法是提供一个SOAP Web服务,该服务将LogMessage对象作为单个参数。 public class LogMessage { public string Message { get; set; } public string Exception { get; set; } public string Version { get; set; } public string User { get; set; } } 如果调用客户端错误表面并调用LogClientError方法,则通过log4net记录错误,Flex客户端将填充此对象。 [WebMethod()] public void LogClientError(LogMessage message) { rollingLogger.Error(message); } 目前,这将打印LogMessage类的完全限定名称,因此我目前的假设是log4net只是在传入的对象上调用.ToString()。 但是,我真正希望能够做的是将LogMessage类中的每个属性映射到一个模式,以便log4net正确地写出所需的信息。 我想以这样的方式执行此操作,即仍然支持典型的appender(DB,File,SMTP)。 如何配置log4net以使对象的属性可以映射到日志输出?

如何通过SqlConnection获取上次执行的SQL查询?

实际上,我的情景与此处提到的有点不同。 我问了其他问题。 但由于我没有在那里得到解决方案,我决定改变方法。 我的代码可以访问SqlConnection对象。 我无法访问所有其他ADO.NET对象,如SqlCommand , SqlParameter等。 这些其他对象由Dapper Extensions ORM使用。 我的应用程序使用SqlConnection对象和Dapper Extensions方法执行SQL查询。 SQL查询由Dapper Extensions自动生成; 我无法访问生成的查询。 我想记录这个SQL查询。 我已经有了我的日志记录模块,我唯一需要的是连接对象执行的最后一个SQL查询。 如何通过SqlConnection获取上次执行的SQL查询? 以下操作无效,因为无法访问SqlCommand 。 如果我得到底层的SqlCommand ,我可以使用下面的代码从它构建查询; 不幸的是,我无法访问它。 public string GetCommandLogString(IDbCommand command) { string outputText; if(command.Parameters.Count == 0) { outputText = command.CommandText; } else { StringBuilder output = new StringBuilder(); output.Append(command.CommandText); output.Append(“; “); IDataParameter objIDataParameter; int parameterCount = command.Parameters.Count; for(int […]

建议设计:应用程序中几乎每个对象都有loggger

我正在写一个应用程序。 我使用NLog进行日志记录。 在这个应用程序中几乎每个对象都可以写入日志。 我为此定义了受保护的成员: protected Logger logger; protected virtual Logger Logger { get { return logger ?? (logger = LogManager.GetLogger(this.GetType().ToString())); } } 在这种情况下,我需要为应用程序中的每个基类复制/粘贴此代码。 或者我看到其他选项:使用记录器定义特定于应用程序的根对象并将其子类化。 但在语义上这听起来是错误的,因为对我来说这不是真正的“是 – ”的情况。 有没有更好的选择?