我是一个新手,刚接触log4j,现在做一个项目,不是web的,也就没有WEBROOT、WEB-INF了,不知道这个log4j.properties文件该放在哪个目录下,PropertyConfigurator.configureAndWatch("log4j.properties"); 这个括号中是该写什么路径,是写相对路径好还是绝对路径好,log4j.rootLogger=INFO,A1,A4
#A1
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} %-5p [%t] %37c %3x - %m%n
#A4
log4j.appender.A4=org.apache.log4j.DailyRollingFileAppender
log4j.appender.A4.file=./log/day.log
log4j.appender.A4.DatePattern='.'yyyy-MM-dd
log4j.appender.A4.layout=org.apache.log4j.PatternLayout 
log4j.appender.A4.layout.ConversionPattern=[%-5r][%t][%-5p] %d{yyyy-MM-dd HH:mm:ss,SSS} method:%l %m%n
#log4j.appender.A4.layout.ConversionPattern=%m%n这个log4j.appender.A4.file=./log/day.log也不知道写的对不对,请指教了,谢谢

解决方案 »

  1.   

    应该是你目标文件的根目录,也就是bin下,Eclipse中直接把文件复制到src下就可以,一般配置文件是通过ClassLoader读取的。
    用相对路径好。
      

  2.   

    不清楚非Web应用中log4j.properties文件放哪里,不过在web应用中,一般都放在src目录下的。你可以参考一下。
    PropertyConfigurator.configureAndWatch("log4j.properties"); 我觉得应该用相对路径吧,绝对路径在不同的部署情况下不可靠,相对路径比较可靠。
    log4j.appender.A4.file=./log/day.log,这个不太清楚,但是感觉怪怪的。
      

  3.   

    我建了一个普通的项目叫做test,下面有bin, lib, src目录。我在src目录放log4j.properties, 这样log4j就可以自动初始化成功。我的log4j.properties是这样的:
    # log4j.properties
    log4j.rootLogger=INFO,RC,RC1log4j.appender.RC=org.apache.log4j.ConsoleAppender
    log4j.appender.RC.Threshold=WARN
    log4j.appender.RC.layout=org.apache.log4j.PatternLayout
    log4j.appender.RC.layout.ConversionPattern=%d{yyyy-MM-dd HH\:mm\:ss,SSS} %-5p \:%m;%nlog4j.appender.RC1=org.apache.log4j.FileAppender
    log4j.appender.RC1.Threshold=info
    log4j.appender.RC1.File=./123.properties
    log4j.appender.RC1.layout=org.apache.log4j.PatternLayout
    log4j.appender.RC1.layout.ConversionPattern=%d{yyyy-MM-dd} %-5p \:%m;%n
    这样我的两个appender都起作用了。一个输出到控制台, 一个输出到当前项目目录的根目录下面叫做123.log.
    我在类中是这样用logger的:import org.apache.log4j.Logger;public class Test {
    public static Logger logger = Logger.getLogger(Test.class);
    public static void main(String[] args) {
    logger.info("This is a info");
    logger.debug("This is a debug");
    logger.warn("This is a warn");
    logger.error("This is a error");
    }
    }
      

  4.   

    要在自己的程序中使用Log4j,首先需要将commons- logging.jar和logging-log4j-1.2.9.jar导入到构建路径中。然后再将log4j.properties放到src根目录下。这样就可以在程序中使用log4j了。在类中使用log4j,首先声明一个静态变量 Logger logger=Logger.getLog("classname");现在就可以使用了,用法如下:logger.debug("debug message")或者logger.info("info message"),看下面一个小例子:
    import com.foo.Bar;
      import org.apache.log4j.Logger;
      import org.apache.log4j.PropertyConfigurator;
      public class MyApp {
        static Logger logger = Logger.getLogger(MyApp.class.getName());
        public static void main(String[] args) {
          // BasicConfigurator replaced with PropertyConfigurator.
          PropertyConfigurator.configure(args[0]);
          logger.info("Entering application.");
          Bar bar = new Bar();
          bar.doIt();
          logger.info("Exiting application.");
        }
      } 
      

  5.   

    这样在控制台和log file中输出了不同级别的log.
    log4j.properties放在classpath下面就可以了。如果你熟悉java命令并且理解classpath的话。
    希望对你有帮助。
      

  6.   

    自己可以建一个conf文件夹,放在classpath下就ok了