在Java中,为什么最好的做法是声明一个logging器static final ? private static final Logger S_LOGGER
我有以下的logback.xml文件: <configuration debug="true"> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} – %msg%n</pattern> </encoder> </appender> <root level="debug"> <appender-ref ref="STDOUT" /> </root> </configuration> 现在,在发生特定事件时,我想以编程方式将根logging器的级别从debugging更改为错误 。 我不能使用variablesreplace,在代码中这是强制性的。 如何做呢 ? 谢谢。
我正在使用一个初始化脚本来运行一个简单的过程,它是从以下开始的: start-stop-daemon –start –quiet –chuid $DAEMONUSER \ –make-pidfile –pidfile $PIDFILE –background \ –exec $DAEMON $DAEMON_ARGS 名为$ DAEMON的进程通常会将日志信息打印到其标准输出中。 据我可以告诉这个数据没有被存储在任何地方。 我想编写或追加$ DAEMON的标准输出到某个地方的文件。 我知道的唯一解决scheme是告诉start-stop-daemon直接调用shellcript而不是$ DAEMON; 该脚本然后调用$ DAEMON并写入日志文件。 但是这需要一个额外的脚本,像修改守护进程本身似乎是解决这个共同任务的错误方法。
查询历史logging是否存储在某些日志文件中? 如果是的话,你能告诉我如何find他们的位置? 如果没有,你可以给我一些关于如何看待它的build议吗?
我是Python的日志包新手,并计划将其用于我的项目。 我想定制我的口味的时间格式。 以下是我从教程中复制的简短代码: import logging # create logger logger = logging.getLogger("logging_tryout2") logger.setLevel(logging.DEBUG) # create console handler and set level to debug ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) # create formatter formatter = logging.Formatter("%(asctime)s;%(levelname)s;%(message)s") # add formatter to ch ch.setFormatter(formatter) # add ch to logger logger.addHandler(ch) # "application" code logger.debug("debug message") logger.info("info message") logger.warn("warn message") logger.error("error message") logger.critical("critical […]
我们在项目中使用SLF4J + Logback组合已经有一段时间了,对此我们感到非常满意,但是我们的日志策略相当简单,使用了基于类的直接logging器,并且没有像MDC或Markers这样的花哨的东西。 我想知道的是社区中的任何人实际上是否使用这些function以及如何使用这些function来改进日志logging/过滤。 我特别感兴趣的是在哪里,为什么以及如何使用[1]标记进行采伐。 他们认为我是一个很好的将日志语境添加到日志中的function – 例如,当一个类可能处理多个问题时,可以使用任务/关注特定标记来区分日志语句。 什么是在日志中创build和使用标记的最佳实践,约定或策略。 更新:我想,我真正追求的不是为什么要使用标记,而是如何使用标记 – 是否有一些命名标记的良好实践(例如,使用带空格或短划线/下划线/标点分隔的关键字样式名称的纯文本),是否应该有一些“标准名称”,根据业务function命名的东西。 我可能为自己弄清楚的问题,但是如果我想系统地使用这些function,并将它们引入开发团队,那么有一些正式的指导方针是有道理的。 [1] – 通过询问如何使用标记,我并不真正问如何使用API(这实际上是非常简单的) – 我更倾向于指出如何使用标记一致地logging日志
我在集成testing套件中使用commons-httpclient 3.1。 HttpClient的默认日志logging非常嘈杂,我似乎无法closures它。 我试过按照这里的说明,但没有一个有所作为。 大多数情况下,我只需要让org.apache.http.wirelogging器闭嘴。 部分问题是我不知道HttpClient试图使用什么types的logging器,大部分的问题是我从来没有使用过这个库。 我试图创build一个log4j.properties文件,并将其放在我的testing/资源文件夹中,修改jre / lib中的master logging.properties文件,并将各种日志logging选项发送到Maven,如日志页上指定的,有什么区别。 任何帮助表示赞赏…这使我疯狂。 更新:一个更正:看起来问题的输出实际上源于jwebunit使用HttpClient,而不是我自己的。 无论哪种方式,这是不可取的。 更新:感谢迄今的尝试。 我已经尝试了以下build议,但仍然没有运气。 我有一个文件commons-logging.properties在我的src / test / resources文件夹下面的内容 org.apache.commons.logging.LogFactory=org.apache.commons.logging.impl.Log4jFactory log4j.configuration=log4j.properties 和一个文件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 但是,当我运行我的testing时,我仍然得到一堆像这样的输出: 21:57:41.413 [main] DEBUG org.apache.http.wire – << " [\r][\n]" 21:57:41.413 [main] DEBUG org.apache.http.wire – […]
目前,默认条目看起来像这样: Oct 12, 2008 9:45:18 AM myClassInfoHere INFO: MyLogMessageHere 我怎样才能做到这一点? Oct 12, 2008 9:45:18 AM myClassInfoHere – INFO: MyLogMessageHere 澄清我正在使用java.util.logging
有些人使用ELMAH而不是log4net。 是什么让它变得更好? 我在一个堆栈溢出问题的答案中发现了ELMAH 问题如何在C#中进行日志logging?
TeX / LaTeX是伟大的,我用它在很多方面。 它的一些优点是: 它使用文本文件,通过这种方式,input文件可以被区分,并且存在许多工具来处理文本 这是非常灵活的 它有一个稳定的布局:如果我在文档的开始处更改某些内容,则不会影响文档末尾的其他内容 它有很多扩展来实现不同的目标(一个继任者将开始没有扩展,但会有一个很好的扩展系统) 你可以使用标准的构build控制工具来支持复杂的文档(谢谢dmckee) 你可以封装解决scheme,复制并粘贴到新的文件或发送给他人学习(谢谢dmckee) 但另一方面,一些小事情并不那么好: 一开始就很难学 控制图像的位置很复杂 有几件事情是有点反直觉的 有时你必须input太多(开始{itemize} … \ end {itemize}) 那么,是否存在LaTeX的继任者/替代者,或者至less是替代发展的热门人选。 一个真正的继任者/好的替代者会保持优势并修复这些缺点,或者至less是其中的一部分。