How to get java Logger output to file by default [duplicate]
Asked Answered
M

2

28

Netbeans thoughtfully sprinkles Logger.getLogger(this.getClass().getName()).log(Level. [...] statements into catch blocks. Now I would like to point them all to a file (and to console).

Every logging tutorial and such only me tells how to get a specific logger to output into a file, but I assume there is a better way than fixing every automatically generated logging statement? Setting a handler for some sort of root logger or something?

Mcvay answered 15/4, 2009 at 13:39 Comment(1)
The IDE is generating catch blocks that "eat" exceptions? Despicable! This explains a lot.Supernatural
W
40

I just add the following at startup

Handler handler = new FileHandler("test.log", LOG_SIZE, LOG_ROTATION_COUNT);
Logger.getLogger("").addHandler(handler);

You can specify your own values for LOG_SIZE and LOG_ROTATION_COUNT

You may need adjust the logging level to suit.

Wicketkeeper answered 15/4, 2009 at 13:59 Comment(2)
Thank you all. This looks like the thing I was after.Mcvay
Doing this just gives me a "Void cannot be dereferenced"Agnes
S
2

You have to define where the log is writting in the logger configuration file. For example, if you use log4j, a log4j.xml (or log4j.properties) file will contain such information.

For example, here is a simple log4j.xml file that logs directly into a file (my-app.log) and in the console:

<?xml version="1.0" encoding="UTF-8"?>
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="rolling" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="my-app.log" />
        <param name="DatePattern" value=".yyyy-MM-dd" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                value="%d{yyyy-MM-dd HH:mm:ss} %-5p [%C] [IP=%X{ipAddress}] [user=%X{user}] %m%n" />
        </layout>
    </appender>

    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern"
                value="%d{yyyy-MM-dd HH:mm:ss} %-5p [%C] [user=%X{user}] %m%n" />
        </layout>
    </appender>

    <root>
        <priority value="info" />
        <appender-ref ref="console" />
        <appender-ref ref="rolling" />
    </root>

</log4j:configuration>
Shuma answered 15/4, 2009 at 13:46 Comment(2)
I think from the tags the questioner is using the classes in java.util.logging rather than log4jAestival
He's not using log4j: netbeans generates code for java.util.loggingLobar

© 2022 - 2024 — McMap. All rights reserved.