当前位置: 代码迷 >> Java Web开发 >> 怎么利用log4j 写日志
  详细解决方案

怎么利用log4j 写日志

热度:185   发布时间:2016-04-17 12:22:20.0
如何利用log4j 写日志
我想问下,例如我要将error信息写到 1.log文件里面,
要将正常的信息写到2.log文件;里面,,
想问的是
在log4j.properties里如何的作设置,,
还有在使用的时候怎么用的,,
我自己试了好久都不行

------解决方案--------------------
发个例子让你看看吧.
1.log4j的配置文件.
Java code
# Configuration File for the Logger component in the framework# This property file needs to be accessible in the classpath in order for the# logger to configure properly# set to false to turn off log4j debug statementslog4j.debug=true# Turns off logging in log4j# log4j.threshold=OFFlog4j.rootLogger=ERROR,stdoutlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.MaxFileSize=50000KBlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%-4r [%d{ISO8601}] [%t] %-5p %c %x - %m%n# Configuration for Web Logger#log4j.logger.WEB=debug,webloglog4j.appender.weblog=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.weblog.File=f:/hubstar-web.loglog4j.appender.weblog.DatePattern='.'yyyyMMlog4j.appender.weblog.layout=org.apache.log4j.PatternLayoutlog4j.appender.weblog.layout.ConversionPattern=%-4r [%d{ISO8601}] [%t] %-5p %c %x - %m%n# Configuration for BIZ Logger#log4j.logger.BIZ=debug,bizloglog4j.appender.bizlog=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.bizlog.File=f:/hubstar-biz.loglog4j.appender.bizlog.DatePattern='.'yyyyMMlog4j.appender.bizlog.layout=org.apache.log4j.PatternLayoutlog4j.appender.bizlog.layout.ConversionPattern=%-4r [%d{ISO8601}] [%t] %-5p %c %x - %m%n# Configuration for PERSISTENCE Logger#log4j.logger.PERSISTENCE=debug,persistloglog4j.appender.persistlog=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.persistlog.File=f:/hubstar-persist.loglog4j.appender.persistlog.DatePattern='.'yyyyMMlog4j.appender.persistlog.layout=org.apache.log4j.PatternLayoutlog4j.appender.persistlog.layout.ConversionPattern=[%d{ISO8601}] [%t] %-5p %c %x- %m%n# Configuration for Auditor Logger#log4j.logger.AUDITOR=debug,auditorloglog4j.appender.auditorlog=org.apache.log4j.DailyRollingFileAppenderlog4j.appender.auditorlog.File=f:/hubstar-audit.loglog4j.appender.auditorlog.DatePattern='.'yyyyMMlog4j.appender.auditorlog.layout=org.apache.log4j.PatternLayoutlog4j.appender.auditorlog.layout.ConversionPattern=[%d{ISO8601}] [%t] %-5p %c - %m%nlog4j.logger.ALERT=debug,alertloglog4j.appender.alertlog=org.apache.log4j.RollingFileAppenderlog4j.appender.alertlog.File=f:/hubstar-alert.loglog4j.appender.alertlog.DatePattern='.'yyyyMMlog4j.appender.alertlog.layout=org.apache.log4j.PatternLayoutlog4j.appender.alertlog.layout.ConversionPattern=[%d{ISO8601}] - %m%n
------解决方案--------------------
2.log4j的类.
Java code
package com.ufinity.mealsordering.common;public interface ILogger {    public abstract String getLoggerType();    public abstract boolean debug(String userId, String  method, String message);    public abstract boolean debug(String userId, String  method, String message, Throwable throwable);    public abstract boolean info(String userId, String  method, String message);    public abstract boolean info(String userId, String  method, String message, Throwable throwable);    public abstract boolean warn(String userId, String  method, String message);    public abstract boolean warn(String userId, String  method, String message, Throwable throwable);    public abstract boolean error(String userId, String  method, String message);    public abstract boolean error(String userId, String  method, String message, Throwable throwable);    public abstract boolean fatal(String userId, String  method, String message);    public abstract boolean fatal(String userId, String  method, String message, Throwable throwable);}-------------------------------------------------package com.ufinity.mealsordering.common;import java.text.MessageFormat;import org.apache.log4j.Level;import org.apache.log4j.Logger;public class LoggerImpl implements ILogger{    private Logger  _logger = null;    private String _loggerType = null;    public LoggerImpl(String type, Logger _logger) {        this._loggerType = type;        this._logger = _logger;    }    private static MessageFormat _formatter = new MessageFormat("<< {0} >> [{1}] [{2}]: {3}");        public static String format(String type, String userid, String method,            String message) {        return _formatter.format(new Object[] { type, method, userid, message });    }        public String getLoggerType()    {        return _loggerType;    }    public boolean debug(String userId, String method, String message)    {        return debug(userId, method, message, null);    }    public boolean debug(String userId, String method, String message, Throwable throwable)    {        if(_logger.isDebugEnabled())        {            if(throwable != null)                _logger.debug(format(_loggerType, userId, method, message), throwable);            else                _logger.debug(format(_loggerType, userId, method, message));            return true;        } else        {            return false;        }    }    public boolean info(String userId, String method, String message)    {        return info(userId, method, message, null);    }    public boolean info(String userId, String method, String message, Throwable throwable)    {        if(_logger.isInfoEnabled())        {            if(throwable != null)                _logger.info(format(_loggerType, userId, method, message), throwable);            else                _logger.info(format(_loggerType, userId, method, message));            return true;        } else        {            return false;        }    }    public boolean warn(String userId, String method, String message)    {        return warn(userId, method, message, null);    }    public boolean warn(String userId, String method, String message, Throwable throwable)    {        if(_logger.isEnabledFor(Level.WARN))        {            if(throwable != null)                _logger.warn(format(_loggerType, userId, method, message), throwable);            else                _logger.warn(format(_loggerType, userId, method, message));            return true;        } else        {            return false;        }    }    public boolean error(String userId, String method, String message)    {        return error(userId, method, message, null);    }    public boolean error(String userId, String method, String message, Throwable throwable)    {        if(_logger.isEnabledFor(Level.ERROR))        {            if(throwable != null)                _logger.error(format(_loggerType, userId, method, message), throwable);            else                _logger.error(format(_loggerType, userId, method, message));            return true;        } else        {            return false;        }    }    public boolean fatal(String userId, String method, String message)    {        return fatal(userId, method, message, null);    }    public boolean fatal(String userId, String method, String message, Throwable throwable)    {        if(_logger.isEnabledFor(Level.FATAL))        {            if(throwable != null)                _logger.fatal(format(_loggerType, userId, method, message), throwable);            else                _logger.fatal(format(_loggerType, userId, method, message));            return true;        } else        {            return false;        }    }    }--------------------------------------------------------------------------使用方式:public List queryAllGlobalSettings() {        String userId = "";        String method = "queryAllGlobalSettings";        List globalSettings = null;        try {            String hql = "FROM GlobalSetting AS g";            globalSettings  = this.find(hql);            this.info(userId, method, Constant.LOG_QUERY_SUCCESS);        } catch (HibernateException e) {            error(userId, method, "hibernate exception", e); //-----log4j使用方式            throw e;        }        return globalSettings;    }