根据日期和类名两个条件产生日志,步骤如下
1.导入log4j的jar包
2.配置properties文件
#\u65E5\u5FD7\u5730\u5740
LOG_PATH = d:/logs
#\u65E5\u5FD7\u76F8\u5173
MAX_FILE_SIZE =10485760
LOG_LEVEL = Level.DEBUG
PATTERN_LAYOUT = %-5p %d{yyyy-MM-dd HH:mm:ss} %m%n
2.编写工具类代码如下
package com.util;
import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.ResourceBundle;
import org.apache.log4j.Level;
import org.apache.log4j.Logger;
import org.apache.log4j.PatternLayout;
import org.apache.log4j.RollingFileAppender;
public class SynLog {
private static String PROPERTIES_FILE = "logconf";
private static String LOG_PATH;
private static String DATE_LOG_FOLDER;
private static String LOG_LEVEL;
private static String PATTERN_LAYOUT;
private static long MAX_FILE_SIZE;
private SynLog() {
}
public static Logger getLogInstance(String name) {
Logger logger = Logger.getLogger(name);
try {
String pattern = getPatternLayout();
RollingFileAppender appender = new RollingFileAppender(
new PatternLayout(pattern), createClassLogFile(name)
.getAbsolutePath());
long maxfilesize = getMaxFileSize();
appender.setMaximumFileSize(maxfilesize);
logger.addAppender(appender);
String level = getLogLevel();
logger.setLevel((Level) Level.toLevel(level));
} catch (Exception e) {
e.printStackTrace();
}
return logger;
}
private static File createDateLogFolder() {
LOG_PATH = getLogPath();
if (LOG_PATH == null) {
readLogConfigParams();
}
String currentdate = getCurrentDate();
DATE_LOG_FOLDER = LOG_PATH + System.getProperty("file.separator")
+ currentdate;
File logFolder = new File(DATE_LOG_FOLDER);
try {
if (!logFolder.exists()) {
logFolder.mkdirs();
}
} catch (Exception ex) {
ex.printStackTrace();
}
return logFolder;
}
private static File createClassLogFile(String classname) {
if (DATE_LOG_FOLDER == null) {
createDateLogFolder();
}
String classnameString = DATE_LOG_FOLDER
+ System.getProperty("file.separator") + classname + ".txt";
File logFile = new File(classnameString);
try {
if (!logFile.exists()) {
logFile.createNewFile();
}
} catch (Exception ex) {
ex.printStackTrace();
}
return logFile;
}
private static void readLogConfigParams() {
ResourceBundle rb = ResourceBundle.getBundle(PROPERTIES_FILE);
LOG_PATH = rb.getString("LOG_PATH");
LOG_LEVEL = rb.getString("LOG_LEVEL");
PATTERN_LAYOUT = rb.getString("PATTERN_LAYOUT");
MAX_FILE_SIZE = Long.parseLong(rb.getString("MAX_FILE_SIZE"));
}
private static String getLogPath() {
return LOG_PATH;
}
private static String getCurrentDate() {
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
return df.format(new Date());
}
private static String getLogLevel() {
if (LOG_LEVEL == null) {
readLogConfigParams();
}
return LOG_LEVEL;
}
private static String getPatternLayout() {
if (PATTERN_LAYOUT == null) {
readLogConfigParams();
}
return PATTERN_LAYOUT;
}
private static long getMaxFileSize() {
if (!(MAX_FILE_SIZE > 0)) {
readLogConfigParams();
}
return MAX_FILE_SIZE;
}
public static void main(String[] args) {
Logger logger = SynLog.getLogInstance("LogBase");
logger.info("info");
logger.error("error");
}
}
3.编写测试语句
package com.feng;
import org.apache.log4j.Logger;
import com.util.SynLog;
public class Test01 {
private static Logger logger = SynLog.getLogInstance("Test0412");
public static void main(String[] args) {
// TODO Auto-generated method stub
logger.info("我的日志测试");
}
}
5.查看生成日志文件