Tag: 日志logging

如何使用线程池的MDC?

在我们的软件中,我们广泛使用MDC来跟踪networking请求的会话ID和用户名等内容。 这在原始线程中运行正常。 但是,有很多事情需要在后台处理。 为此,我们使用java.concurrent.ThreadPoolExecutor和java.util.Timer类以及一些自卷asynchronous执行服务。 所有这些服务pipe理他们自己的线程池。 这就是Logback的手册在这样的环境中使用MDC的说法: 映射的诊断上下文的副本不能始终由启动线程的工作线程inheritance。 当java.util.concurrent.Executors用于线程pipe理时就是这种情况。 例如,newCachedThreadPool方法创build一个ThreadPoolExecutor并像其他线程池代码一样,它具有复杂的线程创build逻辑。 在这种情况下,build议在向执行程序提交任务之前,在原始(主)线程上调用MDC.getCopyOfContextMap()。 当任务运行时,作为其第一个操作,它应调用MDC.setContextMapValues()将原始MDC值的存储副本与新的Executorpipe理线程相关联。 这样可以,但是忘记添加这些电话是很容易的,而且要等到为时已晚,还没有简单的方法来识别问题。 Log4j的唯一标志就是在日志中丢失了MDC信息,而在Logback中,您会得到陈旧的MDC信息(因为在步骤池中的线程从在其上运行的第一个任务inheritance其MDC)。 两者都是生产系统中的严重问题。 我没有看到我们的情况有任何特殊之处,但我在网上找不到这个问题。 显然,这不是很多人碰到的事情,所以一定要有办法避免。 我们在这里做错了什么?

使用Boost.Log日志库的经验?

我正在考虑开始使用Boost.Log日志库 。 有谁使用Boost.Log? 请分享你在这方面的经验。 我正在考虑的其他库有Apache log4cxx(安装起来很麻烦,但是我的团队成员想要一些简单的入门)和Pantheios(同样的问题,因为它与额外的前端和后端一起工作)。

速记方法只能修改logging中的一个字段(复制一个logging只能改变一个字段)?

假设我有以下loggingADT: data Foo = Bar { a :: Integer, b :: String, c :: String } 我想要一个接受logging并返回一个logging(相同types)的函数,其中除了一个字段之外,其他字段的值都与作为parameter passing的值相同,如下所示: walkDuck x = Bar { a = ax, b = bx, c = lemonadeStand (ax) (bx) } 以上的工作,但是对于有更多字段(比如说10 )的logging来说,创build这样一个函数将需要大量的input,我觉得这是不必要的。 有没有更简单的方法来做同样的事情?

如何打印debugging日志?

我想debugging这个代码,但我猜“打印日志到屏幕或文件”对我来说很好。 我应该如何在php代码中打印日志? 通常的print/printf似乎转到HTML输出而不是控制台。 我有Apache服务器执行PHP代码。

Python日志logging:在时间格式中使用毫秒

默认情况下, logging.Formatter('%(asctime)s')使用以下格式打印: 2011-06-09 10:54:40,638 其中638是毫秒。 我需要把逗号改成一个点: 2011-06-09 10:54:40.638 格式化我可以使用的时间: logging.Formatter(fmt='%(asctime)s',datestr=date_format_str) 但是文档没有指定如何格式化毫秒。 我发现这个问题谈到了几微秒,但是a)我更喜欢毫秒和b)由于%f ,以下不能在Python 2.6(我工作)上工作: logging.Formatter(fmt='%(asctime)s',datefmt='%Y-%m-%d,%H:%M:%S.%f')

Python / Django:在runserver下login到控制台,在Apache下login到文件

当我在manage.py runserver下运行我的Django应用程序时,如何将跟踪消息发送到控制台(如print ),但是当我在Apache下运行应用程序时,将这些消息发送到日志文件? 我回顾了Django的日志logging ,尽pipe我对它在高级应用中的灵活性和可configuration性印象深刻,但我仍然为如何处理简单的使用情况而苦恼。

log4j日志logging层次结构顺序

什么是log4j日志的层次结构? DEBUG INFO WARN ERROR FATAL 哪一个提供最高的日志logging,这将有助于解决问题? 任何人都可以提供从高到低的日志logging的顺序或层次结构吗? 谢谢!

有没有“Vim运行时日志”?

有时我会在我的vimrc中尝试一个定制/命令。 一切都看上去是正确的,但它是行不通的。 很难知道vim启动时发生了什么,并知道哪个命令失败了,所以debugging可能会导致vimrc中的问题真的很困难。 这是一个试验错误的方法,这是非常耗时的,而且是一个PITA。 例如,我在某些文件中遇到了snipmate插件的问题,只是不知道如何发现问题。 vim启动时是否有“运行时日志”,告诉哪些命令执行,哪些命令失败等等? 这会帮助我很多。

如何configurationslf4j-simple

api 1.7和slf4j-简单的实现。 我只是无法find如何configuration这个组合的日志logging级别。 任何人都可以帮忙吗?

Tomcat启动日志 – 严重:错误filterStart如何获取堆栈跟踪?

当我启动Tomcat时,出现以下错误: Jun 10, 2010 5:17:25 PM org.apache.catalina.core.StandardContext start SEVERE: Error filterStart Jun 10, 2010 5:17:25 PM org.apache.catalina.core.StandardContext start SEVERE: Context [/mywebapplication] startup failed due to previous errors Tomcat的日志不包括堆栈跟踪似乎很奇怪。 有人build议如何增加Tomcat中的日志logging来获取像这样的错误的堆栈跟踪?