标签: logging

我们如何在java中将行号打印到日志中

如何将行号打印到日志中.假设在向日志输出一些信息时,我还想打印输出在源代码中的行号.正如我们在堆栈跟踪中看到的,它显示发生异常的行号.异常对象上有堆栈跟踪.

其他替代方案可以是在打印到日志时手动包括行号.还有其他方法吗?

java logging

128
推荐指数
8
解决办法
14万
查看次数

如何在线程池中使用MDC?

在我们的软件中,我们广泛使用MDC来跟踪会话ID和Web请求的用户名等内容.这在原始线程中运行时工作正常.但是,有很多事情需要在后台处理.为此,我们使用java.concurrent.ThreadPoolExecutorjava.util.Timer类以及一些自动异步执行服务.所有这些服务都管理自己的线程池.

这就是Logback的手册在这样的环境中使用MDC所要说的:

映射的诊断上下文的副本不能始终由来自启动线程的工作线程继承.当java.util.concurrent.Executors用于线程管理时就是这种情况.例如,newCachedThreadPool方法创建一个ThreadPoolExecutor,就像其他线程池代码一样,它具有复杂的线程创建逻辑.

在这种情况下,建议在将任务提交给执行程序之前,在原始(主)线程上调用MDC.getCopyOfContextMap().当任务运行时,作为其第一个操作,它应调用MDC.setContextMapValues()以将原始MDC值的存储副本与新的Executor托管线程相关联.

这样会很好,但是很容易忘记添加这些调用,并且没有简单的方法来识别问题,直到为时已晚.Log4j的唯一标志是您在日志中丢失了MDC信息,而使用Logback,您会收到过时的MDC信息(因为胎面池中的线程从其上运行的第一个任务继承其MDC).两者都是生产系统中的严重问题.

我不认为我们的情况有任何特殊之处,但我在网上找不到这个问题.显然,这不是很多人碰到的东西,所以必须有办法避免它.我们在这做错了什么?

java logging logback slf4j mdc

128
推荐指数
5
解决办法
5万
查看次数

检索最后100行日志

我需要从日志文件中检索最后100行日志.我尝试了sed命令

sed -n -e '100,$p' logfilename
Run Code Online (Sandbox Code Playgroud)

请让我知道如何更改此命令以专门检索最后 100行.

linux logging sed

128
推荐指数
5
解决办法
25万
查看次数

使用java.util.logging.Logger时如何在文本文件中写日志

我有一种情况,我想将我创建的所有日志写入文本文件.

我们使用java.util.logging.Logger API来生成日志.

我试过了:

private static Logger logger = Logger.getLogger(className.class.getName());
FileHandler fh;   
fh = new FileHandler("C:/className.log");   
logger.addHandler(fh); 
Run Code Online (Sandbox Code Playgroud)

但仍然只在控制台上登录....

java logging

127
推荐指数
6
解决办法
35万
查看次数

通过JVM参数配置log4j?

我必须将哪些变量设置/传递给JVM才能使log4j正常运行?正确地说,我的意思是不要抱怨并打印到控制台.我能看到一个典型的例子吗?

注意:我需要避免在应用程序中创建log4j.properties文件.

java logging log4j

125
推荐指数
6
解决办法
17万
查看次数

使用回溯记录异常

如何记录我的Python错误?

try:
    do_something()
except:
    # How can I log my exception here, complete with its traceback?
Run Code Online (Sandbox Code Playgroud)

python error-handling logging exception

123
推荐指数
6
解决办法
10万
查看次数

禁用HttpClient日志记录

我在集成测试套件中使用commons-httpclient 3.1.HttpClient的默认日志记录非常嘈杂,我似乎无法将其关闭.我试过按照这里的说明,但没有一个有任何区别.

大多数情况下,我只需要关闭org.apache.http.wire记录器.问题的一部分是我不知道HttpClient尝试使用什么类型的记录器,大多数问题是我之前从未使用过这个库.我尝试创建一个log4j.properties文件并将其放在我的test/resources文件夹中,修改jre/lib中的master logging.properties文件,并按照日志页面上的指定将各种日志记录选项发送到Maven ,而不是它们都没有有所作为.

任何帮助表示赞赏......这让我疯狂.

更新:更正:看来有问题的输出实际上是通过jwebunit使用HttpClient而不是我自己的.无论哪种方式,这都是不可取的.

更新:感谢迄今为止的尝试.我已经尝试了下面提出的所有建议,但仍然没有运气.我在src/test/resources文件夹中有一个文件commons-logging.properties,其中包含以下内容

org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory
log4j.configuration=log4j.properties
Run Code Online (Sandbox Code Playgroud)

以及具有以下内容的同一文件夹中的文件log4j.properties

log4j.rootLogger=ERROR, stdout
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p [%c] %m%n

#This is the line that should make httpclient shut up
log4j.logger.org.apache.http=ERROR
Run Code Online (Sandbox Code Playgroud)

但是,当我运行我的测试时,我仍然得到一堆像这样的输出:

21:57:41.413 [main] DEBUG org.apache.http.wire - << "                                   [\r][\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << "[\r][\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << "                                   [\r][\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << "                               </ul>[\n]"
21:57:41.413 [main] DEBUG org.apache.http.wire - << "    [\n]"
21:57:41.424 [main] DEBUG …
Run Code Online (Sandbox Code Playgroud)

java logging jwebunit apache-commons-httpclient

123
推荐指数
11
解决办法
9万
查看次数

动态更改log4j日志级别

有哪些动态更改log4j日志级别的方法,以便我不必重新部署应用程序.在这些情况下,这些变化是永久性的吗?

java logging log4j runtime

120
推荐指数
4
解决办法
15万
查看次数

如何打印调试日志?

我想调试一些PHP代码,但我想打印日志到屏幕或文件对我来说很好.

我应该如何在PHP代码中打印日志?

通常print/ printf似乎转到HTML输出而不是控制台.

我有Apache服务器执行PHP代码.

php debugging logging

120
推荐指数
6
解决办法
23万
查看次数

为什么我们声明Loggers静态最终?

在Java中,为什么最佳做法是声明记录器static final

private static final Logger S_LOGGER
Run Code Online (Sandbox Code Playgroud)

java logging

120
推荐指数
4
解决办法
8万
查看次数