【问题标题】:Not printing logs in console of Logger不在 Logger 的控制台中打印日志
【发布时间】:2016-02-26 05:34:48
【问题描述】:

我已经删除了代码中的所有 system.out.println(),并添加了 apache log4j 的 Logger。但是我的控制台中没有打印任何内容。这是我的 log4j.properties 文件

# Define the root logger with appender X
log4j.rootLogger = DEBUG, X

# Set the appender named X to be a File appender
log4j.appender.X=org.apache.log4j.FileAppender

# Define the layout for X appender
log4j.appender.X.layout=org.apache.log4j.PatternLayout
log4j.appender.X.layout.conversionPattern=%m%n

我正在调用记录器类,如下所示

Logger log = Logger.getLogger(PersonImpl.class.getName());

除了我的 log.info() 之外,还打印了其他日志。

DEBUG [http-bio-8080-exec-3] (Table.java:505) - No alter strings for table : hibernate_sequence
DEBUG [http-bio-8080-exec-3] (JtaPlatformInitiator.java:42) - No JtaPlatform was specified, checking resolver
DEBUG [http-bio-8080-exec-3] (JtaPlatformResolverInitiator.java:33) - No JtaPlatformResolver was specified, using default [org.hibernate.engine.transaction.jta.platform.internal.StandardJtaPlatformResolver]
DEBUG [http-bio-8080-exec-3] (StandardJtaPlatformResolver.java:101) - Could not resolve JtaPlatform, using default [org.hibernate.engine.transaction.jta.platform.internal.NoJtaPlatform]
DEBUG [http-bio-8080-exec-3] (NamedQueryRepository.java:149) - Checking 0 named HQL queries
DEBUG [http-bio-8080-exec-3] (NamedQueryRepository.java:165) - Checking 0 named SQL queries

【问题讨论】:

    标签: java logging log4j


    【解决方案1】:

    您只添加了一个FileAppender(这将导致日志仅写入文件中),但如果您还希望在控制台中完成日志记录,您还需要添加一个ConsoleAppender

    可以这样做:

    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{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
    

    并在rootLogger中添加appender的名称,像这样

    log4j.rootLogger = DEBUG, X, stdout
    

    除此之外,如果你想关闭 Hibernate 特定的日志,你将不得不这样做

    log4j.logger.org.hibernate=fatal or log4j.logger.org.hibernate=off
    

    希望这会有所帮助!

    祝你好运!

    【讨论】:

    • thanks.. 但是,除了日志信息之外,它还打印了其他行的行数。我不想要所有其他行
    • 我的意思是说我不想要其他日志,除了我在代码中编写的日志。
    • 你能帮我们举个例子吗,把你不想要的线放在上面,我们不能在不完全知道问题的情况下提供帮助
    • 好的..我又要更新这个问题了。
    • 已更新。请检查
    【解决方案2】:

    将此代码用于您要实际生成日志的类。

    private static final Logger LOGGER = Logger.getLogger("Class Name Where u used");
    LOGGER.error ("string which u want to print");
    LOGGER.info("string which u want to print");
    LOGGER.warn("string which u want to print");
    

    使用我在项目中使用的此设置。它会将您的日志生成到控制台以及 logger.out 到您的项目目录

    log4j.rootLogger=INFO, FILE
    
    # Define the file appender
    log4j.appender.FILE=org.apache.log4j.RollingFileAppender
    log4j.appender.FILE.File=logger.out
    log4j.appender.FILE.MaxFileSize=1MB
    log4j.appender.FILE.MaxBackupIndex=100
    
    # Define the layout for file appender
       log4j.appender.FILE.layout=org.apache.log4j.PatternLayout
       log4j.appender.FILE.layout.conversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
    
    log4j.appender.Console=org.apache.log4j.ConsoleAppender
    log4j.appender.Console.layout=org.apache.log4j.PatternLayout
    log4j.appender.Console.layout.conversionPattern=%m%n
    

    乐于助人!

    【讨论】:

    • 它没有被打印出来。只有休眠查询被打印,而不是 log.info()
    • 否 :(.. 同样的事情.. 只有休眠查询
    • 什么是prm_sMessage?我已经写过 Logger log = Logger.getLogger(PersonImpl.class.getName());
    • 为什么这个@Syed 是负面的??我可能是您项目设置中的设置问题,而您对我投了反对票?哇谢谢你这么热情的appriciation..
    • 没有。这是错误地完成的。可能是误点击了。我投了赞成票。
    【解决方案3】:

    你可以打印文件中的日志

    log4php.appender.services = LoggerAppenderDailyFile

    log4php.appender.services.layout = LoggerLayoutPattern

    log4php.appender.services.datePattern = Y-m-d

    log4php.appender.services.file = /home/Logs_%s

    log4php.appender.services.layout.ConversionPattern = "%24d{ISO8601} [%p] %F:%L %m %n"

    log4php.rootLogger = 调试、服务

    【讨论】:

    • Vishal 我不想在任何文件中。我只想在我的控制台中,也只有我的日志。
    【解决方案4】:

    试试这个:

    log4j.rootLogger=调试,标准输出

    log4j.appender.stdout=org.apache.log4j.ConsoleAppender

    log4j.appender.stdout.Target=System.out

    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout

    【讨论】:

      猜你喜欢
      • 2018-11-28
      • 2016-12-20
      • 2019-12-15
      • 1970-01-01
      • 2015-10-28
      • 1970-01-01
      • 2015-10-03
      • 1970-01-01
      • 2023-04-01
      相关资源
      最近更新 更多