How to log stdout output in Tomcat?

前端 未结 3 1967
粉色の甜心
粉色の甜心 2020-12-29 06:04

Is there a way to log all stdout output to the catalina.log file in Tomcat? (i.e. everything that gets printed to System.out.println())

The console wind

相关标签:
3条回答
  • 2020-12-29 06:27

    Did you checked, whether the log4j.properties file can be found from your application? Maybe you can check, by setting a hardcoded file path like

    -Dlog4j.configuration=file:///C:\Dev\log4j.properties

    If the logs are written after these change, the relativ path to the log4j file is wrong.

    0 讨论(0)
  • 2020-12-29 06:31

    I've come across similar questions before, and haven't found a way to do this by logging System.out in Windows unless you are running Tomcat as a Windows service. This seems to work by default in Unix since startup.sh points to catalina.sh which logs stdout to the catalina.out file like below

    org.apache.catalina.startup.Bootstrap "$@" start >> "$CATALINA_BASE"/logs/catalina.out 2>&1 &
    

    In log4j, ConsoleAppender by itself does not append to a File, only to System.out

    However, I've modified your log4j properties to add a FileAppender and this config works, but of course this logs into a separate log file.

    New config

    # Set root logger level to DEBUG.
    log4j.rootLogger=DEBUG, console, myFile
    
    log4j.appender.console=org.apache.log4j.ConsoleAppender
    log4j.appender.console.layout=org.apache.log4j.PatternLayout
    log4j.appender.console.layout.ConversionPattern=[%d{ABSOLUTE} %-5p %c{1}]: %m%n
    
    
    
    
    # myFile writes to file
    log4j.appender.myFile=org.apache.log4j.RollingFileAppender
    log4j.appender.myFile.File=logs/tomcatlog4j.log
    log4j.appender.myFile.MaxFileSize=100KB
    log4j.appender.myFile.layout=org.apache.log4j.PatternLayout
    log4j.appender.myFile.layout.ConversionPattern==[%d{ABSOLUTE} %-5p %c{1}]: %m%n
    

    Output

    =[15:24:03,819 INFO A1]: In my.jsp =[15:24:03,975 INFO A1]: Out of my.jsp =[15:24:04,880 INFO A1]: In my.jsp =[15:24:04,880 INFO A1]: Out of my.jsp

    also see

    How to log exceptions from a specific package deployed in tomcat

    log select events into a separate file

    https://serverfault.com/questions/201178/tomcat-5-5-how-to-redirect-the-logging-output-to-one-file-per-web-application

    0 讨论(0)
  • 2020-12-29 06:41

    If I look at the default logging config of tomcat 5.5 in logging.properties:

    org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
    org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = 2localhost.org.apache.juli.FileHandler
    

    That looks to me as if stdout of web applications might be logged to files only for level INFO and above, regading that http://tomcat.apache.org/tomcat-5.5-doc/logging.html states that in tomcat JULI logging configuration loggers do not use parent's handlers when they are assigned their own handlers. Also the file should be prefixed localhost and not catalina. But then I do not understand how the output comes to your output window :/

    0 讨论(0)
提交回复
热议问题