log4j日志的使用

根据日期和类名两个条件产生日志,步骤如下
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.查看生成日志文件
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是使用Log4j打印日志的步骤: 1. 在pom.xml文件中添加log4j的依赖,如下: ```xml <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> ``` 2. 在src/main/resources目录下创建log4j.properties文件,配置log4j的相关参数,如下: ```properties # Global logging configuration log4j.rootLogger=INFO, stdout # Console output... log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] %-5p %c %x - %m%n # Log file log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.File=/var/log/myapp.log log4j.appender.file.MaxFileSize=10MB log4j.appender.file.MaxBackupIndex=10 log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS} [%t] %-5p %c %x - %m%n ``` 上述配置中,rootLogger设置为INFO级别,输出到stdout和log文件中;stdout输出到console,log文件输出到/var/log/myapp.log文件中。 3. 在需要打印日志的类中,使用log4j进行日志打印,如下: ```java import org.apache.log4j.Logger; public class MyService { private static final Logger logger = Logger.getLogger(MyService.class); public void doSomething() { logger.info("something happened"); logger.error("something went wrong"); } } ``` 在上述代码中,使用Logger.getLogger()方法获取Logger对象,然后使用info()和error()方法打印日志。 这就是使用Log4j打印日志的基本步骤,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值