/** * Copyright 2018-2028 Akaxin Group * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.windchat.common.logs; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.DailyRollingFileAppender; import org.apache.log4j.FileAppender; import org.apache.log4j.Logger; import org.apache.log4j.PatternLayout; import org.apache.log4j.RollingFileAppender; /** * @author Sam{@link an.guoyue254@gmail.com} * @since 2018-01-31 12:31:53 */ public class LogCreater { // 默认当前目录下 public static Logger createLogger(String logName) { return createLogger(logName, null, new PatternLayout(), false, false); } // 指定目录logPath下 public static Logger createLogger(String logName, String logPath) { return createLogger(logName, logPath, new PatternLayout(), false, false); } // 当前目录下每天创建一个日志 public static Logger createTimeLogger(String logName) { return createLogger(logName, null, new PatternLayout("[%p] %d [%c] \r\n\t%m%n"), false, true); } // 指定目录下每天创建一个日志 public static Logger createTimeLogger(String logName, String logPath) { return createLogger(logName, logPath, new PatternLayout("[%p] %d [%c] \r\n\t%m%n"), false, true); } /** * * @param logName * log文件名称 * @param logPath * log路径 * @param layout * log布局 * @param additivity * 子类appender是否集成父类appender * @param isDailyMode * 是否按天来记录 * @return */ public static Logger createLogger(String logName, String logPath, PatternLayout layout, boolean additivity, boolean isDailyMode) { Logger createdLogger = Logger.getLogger(logName); try { String logFileName = null; if (StringUtils.isEmpty(logPath)) { logFileName = logName + ".log"; } else if (logPath.endsWith("/")) { logFileName = logPath + logName + ".log"; } else { logFileName = logPath + "/" + logName + ".log"; } FileAppender fileAppender = null; if (isDailyMode) { fileAppender = new DailyRollingFileAppender(layout, logFileName, "'.'yyyy-MM-dd"); } else { fileAppender = new RollingFileAppender(layout, logFileName, true); RollingFileAppender rollingAppender = (RollingFileAppender) fileAppender; rollingAppender.setMaxFileSize("200MB"); rollingAppender.setMaxBackupIndex(5); } // do not need bufferedIO // fileAppender.setBufferedIO(true); // fileAppender.setBufferSize(8192); createdLogger = Logger.getLogger(logName); createdLogger.removeAllAppenders(); createdLogger.setAdditivity(additivity); createdLogger.addAppender(fileAppender); } catch (Exception e) { throw new RuntimeException("create logger error", e); } return createdLogger; } }