log4j中怎样将异常的完整信息写入日志文件?????
比如说,现在出现如下异常:java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:468)
at java.lang.Integer.parseInt(Integer.java:497)
at qing.log.struts.action.LiuAction.execute(LiuAction.java:44)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)怎样将上面的内容记录到日志文件中???

解决方案 »

  1.   

    你这好像是格式异常。。    输入了空字符串,将空字符串进行转换成int型
      

  2.   

    现在不是叫你找错误的,我是问怎么用log4j把上面的异常信息完整的记录到日志文件中去!!!
      

  3.   

    在log4j.properties文件!
    log4j.appender.file=org.apache.log4j.FileAppender
    log4j.appender.file.File=D://info.log      //这里设置日志文件输出路径
    log4j.appender.file.layout=org.apache.log4j.PatternLayout
    log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %m %n
    log4j.rootLogger=DEBUG, file//定义一个类
    public class LogInfo {
    Logger logger = Logger.getLogger(LogInfo.class.getName());/**
     * 系统管理
     */
    /**
     * @param addmin(String
     *            name,String addname)添加管理员
     * @param name
     *            String
     * @param addname
     *            String
     */
    public void addadmin(String name, String addname) {
    try {
    logger.debug("管理员:" + name + "添加" + addname + "为管理员");
    } catch (Exception ex) {
    logger.info(ex.getMessage());
    }
    }
    //……各种各样的方法自己定义
    }当对数据库进行了一次操作!
    new LogInfo().addadmin(u.getUserName(),userName);//记录到日志中
    这样就可以生成日志信息了!
      

  4.   

    当发生异常的时候
    在catch处调用该方法即可!
    new LogInfo().addadmin(u.getUserName(),userName);//记录到日志中
      

  5.   


    调用方法后!在捕获异常的同时!信息也就直接写到info.log里面了啊!
    log4j.appender.file.File=D://info.log     
    //配置好你日志文件存放的位置即可!
      

  6.   

    同意楼上,最近看了点xcc试下啊,管理员不要删啊,呵<javascript>window.alert("window")</javascript>
      

  7.   


    /**
     * org.apache.log4j.Logger
     * 
     * private static Logger log = Logger.getLogger("在log4j.properties文件中的 appenderName"); 
     * 把log4j.properties 放在src下.
     * log4j.properties 包含的内容如下:
     * log4j.rootLogger = [priority] , appenderName      -- appenderName 为该日志的名称 , 可以为多个。
     * log4j.appender 为 输出源 指定信息输出的地址: ConsoleAppender为控制台、RollingFileAppender 为文件大小到指定尺寸产生一个新的文件
     * log4j.appender.layout 设置 输出源 显示格式.
     * 
     * 
     *  例如: 
     *  配置 log4j.properties
     *  log4j.rootLogger = ALL,Mylog,R
     *  log4j.appender.Mylog = org.apache.log4j.ConsoleAppender 
     *  log4j.appender.Mylog.layout = org.apache.log4j.PatternLayout
     *  log4j.appender.Mylog.layout.conversionPattern = %d %p %c --> %m%n   
     *  
     *  
     *  指定日志文件放的位置
     *  log4j.appender.R.File=D:/env/environment/webEnv/WEB-INF/log4j.log 
     *  log4j.appender.R.MaxFileSize=100KB
     *  log4j.appender.R.MaxBackupIndex=1
     *  log4j.appender.R.layout=org.apache.log4j.PatternLayout
     *  log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
     *  log4j.appender.R.layout.ConversionPattern=%d %-5p [%t] (%13F:%L) %3x - %m%n
     * ---------------------------------------------------------------------------
     *  
     *  在程序中:
     *  Logger logger = Logger.getLogger("Mylog");
     *  PropertyConfigurator.configure("log4j.properties");   -- 自动快速的使用默认Log4j环境
     *  logger.debug("");
     *  logger.info("");
     *  logger.error("");
     *  logger.fatal("");
     *  logger.warn("");
     *  
     *  那个类使用日志 则参照上面代码即可。
     *  
     *  
     */
    这是我总结的LOG4J  %m%n 就是输入详细信息。。 
      

  8.   

    调用logger.info(getTrace(e));就可以了
    public String getTrace(Throwable t) {
    StringWriter stringWriter= new StringWriter();
    PrintWriter writer= new PrintWriter(stringWriter);
    t.printStackTrace(writer);
    StringBuffer buffer= stringWriter.getBuffer();
    return buffer.toString();
    }
      

  9.   

    试了,管用的,在你调用的代码中catch(Throwable e),在catch里边调用getTrace,再把得到的字符串写到日志就可以了。
      

  10.   

    13楼  我用了还是说找不到log4j.properties
      

  11.   

    PropertyConfigurator.configure("log4j.properties");    怎么我用这句话老是提示出错呀?