tags:

views:

175

answers:

2

Are there any example log4j configuration files (XML).

I have a java main application.

I want log4j to output to console AND write to file.

Any examples of this would be greatly appreciated.

I'm using netbeans if that matters.

A: 

The typical thing to do is to put a log4j.properties file in your classpath. The log4j doc will tell you all you need to know about having two appenders for the console and a file, it's in their examples. In other words, don't bother with the less common XML format and stick with the very common properties format.

bmargulies
+1  A: 

Just have more than one appender in your log4j.xml, like this:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="true"
                     xmlns:log4j='http://jakarta.apache.org/log4j/'&gt;

   <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender">
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d{dd MMM yyyy HH:mm:ss} %5p %c{1} - %m%n"/>
      </layout>
   </appender>

   <appender name="fileAppender" class="org.apache.log4j.RollingFileAppender">
      <param name="append" value="false"/>
      <param name="file" value="out/learning.log"/>
      <layout class="org.apache.log4j.PatternLayout">
         <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p [%c{1}] %m%n"/>
      </layout>
   </appender>

   <root>
      <level value="INFO"/>
      <appender-ref ref="consoleAppender"/>
      <appender-ref ref="fileAppender"/>
   </root>

</log4j:configuration>
duffymo
silly question, but would I place this in the same folder as my hibernate.cfg folder? My hibernate.cfg.xml is in my /src folder. I am using netbeans, and confused about classpath sorry!
Blankman
I would not put anything other than .java files in the /src directory. Create a new directory called /config and put your Hibernate and log4j configuration in it. Then add the /config directory to your classpath.
duffymo
I guess I just don't understand how to add things to my classpath, i'm using netbeans.
Blankman
I don't use NetBeans, but I'd hit the Help button on the menu and figure it out as fast as I could if I were you. You simply can't write Java without knowing how CLASSPATH works.
duffymo