Tag: logging

log4net在dll中不起作用

我目前在让log4net在特定的dll中工作时遇到问题。 我正在使用我的测试应用程序调用的其他dll中的log4net,并且日志记录在这些dll中运行正常,也在我的测试应用程序中。 这是我遇到麻烦的一个特殊的dll。 这是我遇到麻烦的dll代码片段。 //This is from ABC.dll public class SessionFactory { protected static ISessionFactory sessionFactory; private static readonly ILog log = LogManager.GetLogger(typeof(SessionFactory)); private static void Init() { try { //Read the configuration from hibernate.xml.cfg or app.config Configuration normalConfig = new Configuration().Configure(); ConfigureNhibernateValidator(normalConfig); log.Debug(“Initializing session factory”); sessionFactory = Fluently.Configure(normalConfig) .Mappings(m => m.FluentMappings .AddFromAssemblyOf() .Conventions.AddFromAssemblyOf()) .ProxyFactoryFactory(“NHibernate.ByteCode.LinFu.ProxyFactoryFactory, […]

如何在发生exception时堆叠日志消息并记录它们?

我有一个执行一堆SQL命令的业务流程。 我想在堆栈中“堆叠”这些sql命令并在发生exception时将它们写入DB,让我用一些代码解释一下 public void BusinessMethod() { Log.Initialize(); // Clear the stack try { Method1ThatExecutesSomeSQLs(); Method2ThatExecutesSomeSQLs(); Method3ThatExecutesSomeSQLs(); } catch(Expection ex) { // if some exception occured in any Method above, them i write the log, otherwise, i dont want to log anything Log.Write(); } } //Example of some Method that executes SQL’s public void Method1ThatExecutesSomeSQLs() { […]

通过WCF记录而不会降低速度

我们的应用程序中有一个大型进程,每月运行一次。 此过程通常在大约30分钟内运行,并生成342000左右的日志事件。 最近我们使用WCF将我们的日志记录更新为集中模型,现在性能有问题。 以前的解决方案将在大约30分钟内完成,而新的日志记录现在需要3到4个小时。 看起来问题是因为应用程序在执行继续之前实际上正在等待WCF请求完成。 WCF方法已经配置为IsOneWay,我将客户端的调用包装到另一个线程中的WCF方法,以尝试防止此类问题,但它似乎没有工作。 我曾经考虑过使用异步WCF调用,但在我尝试别的东西之前想过我会问这里是否有更好的方法来处理这个问题。

企业库滚动平面文件没有滚动

我正在尝试轮换日志文件,每周一天,此配置文件无法正常工作。 如果我将其更改为旋转而不是午夜到分钟,则仅记录一个持续一分钟的单个文件。 没有生成新文件。 最新版本的entreprise库是否有任何已知错误,专注于滚动平面文件无法正常工作? 我当前的配置有问题吗? 谢谢!

为每个客户端和日期分隔日志文件和目录

我有一个Windows TCP服务,有许多设备连接到它,客户端可以有一个或多个设备。 需求: 每个客户端单独的文件夹,每个设备都有单独的日志文件。 所以这样的事情: /MyService/25-04-2016/ Client 1/ Device1.txt Device2.txt Device3.txt Client 2/ Device1.txt Device2.txt Device3.txt 现在我还没有使用像log4net或NLog这样的第三方库,我有一个处理这个问题的类。 public class xPTLogger : IDisposable { private static object fileLocker = new object(); private readonly string _logFileName; private readonly string _logFilesLocation; private readonly int _clientId; public xPTLogger() : this(“General”) { } public xPTLogger(string logFileName) { _clientId = -1; […]

如何使用NLog的DLL

我正在尝试使用Nlog Refresh 1.0为类库项目实现一个简单的日志。 似乎nlog在从dll中实例化时不会创建日志文件。 还有其他方法吗? 我的配置文件如下所示: 我知道这个配置没有任何问题,因为它可以在exe项目中运行。 编辑:只是为了澄清:我无法访问使用我的DLL作为插件的调用程序。 调用程序实际上是outlook,它使用我的dll作为插件。 我想保留一个只与我的dll相关的日志,与outlook本身无关。

暂时存储特定用户的会话

我尝试使用IActivityLogger捕获用户的对话,有没有办法将用户和机器人的对话编译为临时持有者,如变量或会话? 我需要暂时将它存储在只有当用户想要与真人而不是机器人交谈时才能使用的地方。 将发送包含用户和机器人的先前对话的电子邮件。 我不想将其保存到数据库,因为有些用户不会选择这样做。 参见使用的代码。 记录器类: public class Logger:IActivityLogger { public async Task LogAsync(IActivity activity) { var a = ($”From:{activity.From.Id} – To:{activity.Recipient.Id} – Message:{activity.AsMessageActivity()?.Text}” + “\b\r”); } } 全球Asax: protected void Application_Start() { var builder = new ContainerBuilder(); builder.RegisterType().AsImplementedInterfaces().InstancePerDependency(); builder.Update(Conversation.Container); GlobalConfiguration.Configure(WebApiConfig.Register); }

使用多个跟踪侦听器

我有2个WCF服务,我从一个Windows主机托管。 我使用跟踪侦听器将数据记录到应用程序日志中。 我在配置文件中添加了以下代码。 来自两个服务的所有日志都显示在源ReaderServiceLog名称下。 我想要做的是,来自每个服务的日志应该出现在不同的源名称下。 例如,ReaderService中的日志应显示在名称ReaderServiceLog下,InfoService中的日志应显示在InfoServiceLog下。 我修改了我的配置,如下所示。 并使用此代码: private TraceSource ts = new TraceSource(“InfoService”); ts.TraceInformation(outputMessage, aslErrorText); ts.Flush(); 但它不起作用。 它根本不记录任何内容。 我也尝试过这个 。 但它不起作用。 我使用了与上面相同的c#代码。 此代码正确执行日志记录,但同样,这两个服务的名称相同。 即ServiceLog。 我在这里错过了什么吗? 或者还有其他办法吗? 请帮忙

重复位代码的设计模式/ C#技巧

我有一个WCF服务,它记录任何exception,然后将它们作为FaultExceptions抛出。 我正在做很多重复,例如在每种服务方法中。 try { // do some work } catch(Exception ex) { Logger.log(ex); // actually will be Fault Exception but you get the idea. throw ex; } 我正在寻找一种更优雅的方式,因为我在每个服务中剪切并粘贴try / catch。 是否有一个设计模式/ C#技巧可以用来使这更优雅?

$ {basedir}位于哪里,使用NLog?

除非我完全错过它,否则我的印象是NLog文档在其示例中使用了${basedir} ,而没有解释它的位置应该是什么。 我在哪里可以找到列出所有可能选项的信息? 我定义了这个配置: 据我所知,它可以正常工作,但我还没有找到任何记录的地方。