java - 日志框架和 logback.xml

标签 java eclipse logback

使用 Java 和 com.alvazan.orm.api 库创建示例时,禁止使用“System.out.println”。

学习的第一个也是最简单的 Java 练习之一是“Hello World”,也使用 “System.out.println”(...也称为日志记录,或返回在控制台中找到的请求数据?) 使用 Eclipse 时,通过修改 logback.xml 文件(ctrl-shift-R 并输入 logback.xml)来关闭日志记录

从那里开始;
<logger name="com.alvazan.orm" level="WARN"/>
是添加到 logback.xml 文件中的行,以便仅显示启动日志。

此外,还有两个日志,例如......
2012-09-14 22:05:08,067 com.alvazan.test.FactorySingleton createFactory
INFO: CREATING FACTORY FOR TESTS
2012-09-14 22:05:08,809 com.impetus.annovention.ClasspathDiscoverer processFile
INFO: adding folder to scan=file:/C:/AAROOT/workareas/area1/playorm/eclipsegen/
被使用。

  • 只是澄清所有信息都输入到 logback.xml 文件中吗?
  • 是否有不同的文件可供使用(除了 logback.xml 之外)?
  • 或者是最终用户使用,例如“com.alvazan.test.FactorySingleton createFactory”;和“com.impetus.annovention.ClasspathDiscoverer processFile”?
  • 完成这个问题,前面的文件路径是否是必需的?

感谢您的宝贵时间,
瑞安

<小时/>

回应 Brett 以及其他信息/问题,

您的根记录器是如何配置的?您仅为 com.alvazan.orm 设置 WARN,因此如果您的根记录器是 INFO,则将记录 com.alvazan.test INFO。

嘿布雷特,谢谢你的回复...

对于根记录器配置,我相信该值设置为“INFO”。
logback.xml
话虽这么说,我想将“INFO”设置为“WARN”,以防止使用 “System.out.println”
同样在上一个问题中,我提到:

2012-09-14 22:05:08,067 com.alvazan.test.FactorySingleton createFactory
INFO: CREATING FACTORY FOR TESTS
2012-09-14 22:05:08,809 com.impetus.annovention.ClasspathDiscoverer processFile
INFO: adding folder to scan=file:/C:/AAROOT/workareas/area1/playorm/eclipsegen/

com.alvazan.test.FactorySingleton 和 com.impetus.annovention.ClasspathDiscoverer(同一库中的不同包)

在同一图书馆内发现不同位置...
Library

我是否需要对其他文件或*包执行logback过程,或者在同一个库中执行一次,应该足以满足所有人的需求?或者我是否需要调整其他值?

最佳答案

  1. 您的第一个陈述......

"While creating an example using Java and the com.alvazan.orm.api library, the use of "System.out.println" is prohibited."

一般情况下,没有人使用System.out.println。 Hibernate 没有,JBoss 没有,tomcat 没有。它们都使用日志框架,因此您可以配置生产中的每个日志,并且每个使用 tomcat 或 jboss 或 hibernate 的公司可以对其进行不同的配置。如果这些程序使用 System.out.println,客户将无法控制,并且您的服务器将始终运行缓慢,因为您永远不需要“所有”日志记录,并且无法关闭 System.out.println!!!!它们始终在线。 log.info 可以关闭和打开。

有关配置 logback 的最完整答案可以在他们的文档中找到

http://logback.qos.ch/manual/configuration.html

Just clarifying that all information is typed into the logback.xml file?

我不知道你问这个问题是什么意思。 logback.xml 是名为 logback 的日志记录库的配置,您可以在上面的链接中找到它。

Is there a diffrent file to use(other than logback.xml)?
logback 有其他选项,如 groovy 文件来配置它,但 playOrm 仅使用 logback.xml,尽管任何客户端都可以决定使用什么配置文件,因为 playOrm 会丢弃在交付给其他项目时 checkin 的 logback.xml 文件.

Or is the end-user to use, for instance, "com.alvazan.test.FactorySingleton createFactory"; 
and "com.impetus.annovention.ClasspathDiscoverer processFile"?

这个问题我很困惑。最终用户不应该使用 FactorySingleton(无论是直接还是间接,并且该类甚至不在 jar 中,因为它在测试包中)。最终用户将仅间接使用 ClasspathDiscoverer...事实上,最终用户甚至不知道这些类。

Finalizing this question, is the file path for the preceeding necessary?

您想问logback.xml中的文件路径是否必要?如果您想了解更多有关 logback 工作原理的信息,您需要阅读大量文档。基本上,您可以执行 com.alvazan level=WARN 之类的操作,将 com.alvazan.** 中的任何类转换为警告级别(这是递归的,适用于子代、孙子等) 。 ROOT 记录器始终在 logback.xml 中定义,并且是所有包中所有类的级别,除非被覆盖。

是的,playorm 中的根记录器设置为警告。

在您显示的图片底部(您的图片被截断,因此不在该图片中),有一个“源”选项卡,您可能需要单击该选项卡以更好地查看 xml,它将与 logback 的匹配文档也更好。这是我打赌您正在查看的文件的链接..

https://github.com/deanhiller/playorm/blob/486079cfefbd2b4b79e99652b24c146572663dda/input/javasrc/logback.xml

根记录器明确设置为信息,如果需要,可以设置为警告。

所以,你想要什么。您希望这两个日志语句消失并关闭吗?您想要关闭除 WARN 之外的所有日志语句吗?

如果您希望关闭所有软件库中的所有功能,只需将根记录器更改为“WARN”即可。如果您只想关闭 FactorySingleton,您可以添加此行

<logger name="com.alvazan.test.FactorySingleton" level=""WARN"/>

如果您希望关闭所有 com.alvazan 日志记录,而不是仅关闭 com.alvazan.orm 中的所有内容,因为您也希望关闭 com.alvazan.test,但您希望所有其他库仍处于打开状态(但始终想要警告你通常应该想要的),那么你可以改变这个

<logger name="com.alvazan.orm" level=""WARN"/>

改为以下内容

<logger name="com.alvazan" level=""WARN"/>

了解 logback 的最佳方法是阅读 logback 文档。

关于java - 日志框架和 logback.xml,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12435349/

相关文章:

java - 使用SAST工具时,为什么编译语言(例如C/C++)必须使用 "build wrapper"?

eclipse - 带 eclipse 的 SSL

java - 制作自定义 SLF4J 记录器

java - 通过在 android 中使用其 Jar 文件来使用 SherlockActionBar 库

java - 找不到资源可运行的jar

logback:异常堆栈跟踪之前的换行符,但不是其他情况?

java - if condition in logback - 在两个不同的文件夹中打印日志消息

java - Unresolved 依赖关系 NetCDF-Java 库

java - 从 ArrayList 中删除所有特定值

java - 调用需要 API 级别 26(当前最小值为 23): java. time.Instant#now