【问题标题】:Using simple Log4j.properties in my java code在我的 java 代码中使用简单的 Log4j.properties
【发布时间】:2014-06-10 07:28:24
【问题描述】:

我制作了一个简单的Hibernate 3.1 java 代码(在 Eclipse 中),它成功地在数据库中创建了一个表。我的项目中有slfj-api-1.6.0.jarslfj-simple-1.6.0.jar。但是,我在控制台输出中看不到任何 Log4j 记录警告或消息。如何让 log4j 将内容记录到我的控制台?

我的教程说我应该在控制台中输入的一行是 -

log4j.logger.org.hibernate.type = debug

我在网上看到一些帖子告诉我在我的 java 项目中放置一个 Log4j.properties 文件,或者在 src 文件夹中,或者在 src 中创建一个 resources 文件夹并将其放在那里。我在我的电脑中找到了一个Log4j.properties 并将其放在resources 文件夹中。我不确定是否应该使用该文件中的设置或如何根据我的要求编辑该文件。我该如何正确地做到这一点?

编辑 -

log4j.properties 文件 -

### Direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

### set log levels - ###
log4j.rootLogger=warn, stdout log4j.logger.org.hibernate.info

### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=debug

###log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=debug

谢谢。

【问题讨论】:

  • 如果我没记错的话,hibernate.cfg.xml 也必须位于根文件夹中,即 src 文件夹中。
  • @BuhakeSindi - 谢谢。我刚刚弄清楚为什么我的休眠配置文件没有被加载 - stackoverflow.com/questions/18736594/… 无论如何,除了原始问题之外。

标签: java logging log4j


【解决方案1】:

需要注意的一点是,该文件应命名为log4j.properties,并应放置在您的 src 或资源文件夹的根目录中(至少默认情况下)...您似乎将其命名为 Log4j.properties

我还认为您缺少以下依赖项:

    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-log4j12</artifactId>
        <version>1.7.1</version>
    </dependency>

【讨论】:

    【解决方案2】:

    首先,文件名必须小写。 Log4j.properties 文件错误,它是 log4j.properties。这必须放在项目的根文件夹中(大多数情况下是src 文件夹)。

    其次,如果您想将 SLF4J 桥与 log4j 一起使用,您需要下载 log4j jar 文件。从Apache Logging Services 下载您需要的最新库。别忘了 Apache Log4J 有 2 个版本,所以我建议你先尝试 1.x 版本。

    祝你好运!

    【讨论】:

    • 我把它放在resources 文件夹中,该文件夹位于src 文件夹中。我将添加我的 logger.properties 文件。
    • 它应该只在src文件夹中。这就是 Log4J 的配置方式。
    • 根据这篇文章中的@AlexR,您可以将其放在srcsrc - stackoverflow.com/questions/5081316/… 内的任何文件夹中
    • 我将log4j 1.2 jar 添加到我的lib 文件夹中,现在我至少收到了警告消息。我尝试将log4j.properties 文件也添加到我的src 文件夹中,而Log4j 给了我错误-ERROR Could not find value for key log4j.appender.stdout log4j.logger.org.hibernate.info
    • 正如我之前所说,Log4J 在项目的根文件夹中查找log4j.properties。如果您想将其添加到您的resources 文件夹,请参阅此answer
    【解决方案3】:

    只有在项目属性!java 构建路径!源选项卡上将资源文件夹标识为源文件夹时,资源文件夹才是一个选项。

    Slf4j 不使用 log4j 写入日志,除非您在项目中包含 slf4j-log4j[version].jar(例如,slf4j-log4j12-1.7.7.jar)jar。如果包含此 jar,则不得在项目中包含 slfj-simple-1.6.0.jar jar。

    这是slf4j online manual的链接

    【讨论】:

    • 我故意包含了 slf4j-simple。前段时间,我发现一个运行时异常类未找到。我搜索了谷歌,发现添加 slf4j-simple 可以解决问题。老实说,我不知道自己到底在做什么。只是想让学习休眠。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多