一般我们一个项目跑在服务器上,后端一边会做日志记录,而java这方面有log4j这样的日志神器。这里我就简单带你们入门log4j,师傅领进门,修行看个人。
这边你看到第一行rootlogger的参数,两个逗号隔开,第一个是日志级别(INFO,DEBUG,WARN,ERROR,FATAL)这边就不对日志级别作详细介绍,有兴趣的同学自己去找资料了。另外两个一个是配置两个输入日志的位置参数,一个是指向A3,具体A3往哪里打印,日志数据放在哪里,什么样的格式,都在A3那个模块做了详细说明,还有一个就是打印在控制台上。这边我配置了一个10M的文件用来循环打印日志,就是满10M的时候它会循环覆盖,因为我MaxBackupIndex配置了1,也就是只产生一个文件。而RollingFileAppender就是循环打印。
接下去肯定是看调用的时候怎么调用了:这边我就把在主函数这边打印一行日志:
首先,我们先把所用的包给引入项目内,这边我是用maven直接导入包依赖的:
<dependencies>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.14</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
</dependency>
</dependencies>
log4j.rootLogger = INFO,A3,CONSOLE
##日志最低的输出级别
log4j.appender.A3.Threshold=INFO
log4j.appender.A3.encoding=UTF-8
log4j.appender.A3 = org.apache.log4j.RollingFileAppender
log4j.appender.A3.File=/usr/local/flume/logs/MasterLog.log
log4j.appender.A3.MaxFileSize=10240KB
log4j.appender.A3.MaxBackupIndex=1
log4j.appender.A3.ImmediateFlush=true
log4j.appender.A3.DatePattern='_'yyyy-MM-dd
##日志布局方式
log4j.appender.A3.layout=org.apache.log4j.PatternLayout
##日志文件中日志的格式
log4j.appender.A3.layout.ConversionPattern=%-d{yyyy/MM/dd HH:mm:ss} OSS %-5p [%c] - %m%n
##这里使用org.apache.log4j.ConsoleAppender指定要把日志输出到控制台
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.Threshold=INFO
##输出目标是 控制台
log4j.appender.CONSOLE.Target=System.out
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-d{yyyy/MM/dd HH:mm:ss} OSS %-5p [%c] -%m%n
这边你看到第一行rootlogger的参数,两个逗号隔开,第一个是日志级别(INFO,DEBUG,WARN,ERROR,FATAL)这边就不对日志级别作详细介绍,有兴趣的同学自己去找资料了。另外两个一个是配置两个输入日志的位置参数,一个是指向A3,具体A3往哪里打印,日志数据放在哪里,什么样的格式,都在A3那个模块做了详细说明,还有一个就是打印在控制台上。这边我配置了一个10M的文件用来循环打印日志,就是满10M的时候它会循环覆盖,因为我MaxBackupIndex配置了1,也就是只产生一个文件。而RollingFileAppender就是循环打印。
接下去肯定是看调用的时候怎么调用了:这边我就把在主函数这边打印一行日志:
package com.logmark;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.omg.CORBA.INTERNAL;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Random;
/**
* Created by root on 16-3-9.
*/
public class LogProduce {
public static Log log = LogFactory.getLog(LogProduce.class);
public static void main(String[] args){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
log.info("main begin !!!!!");
log.info("when you saw this ,next you will found something logs ,all logs are mark for needly to really!");
while(true) {
String ip = randIP();
String address = randAddress();
String LogoInfo = "{\"appname\":\""+appName+"\",\"timestamp\":\""+System.currentTimeMillis()
+"\",\"IP\":\""+ip+"\",\"address\":\""+address+"\",\"time\":\""
+sdf.format(new Date())+"\",\"status\":\""+randStatus()+"\"}";
log.info(LogoInfo);
try {
Thread.sleep(1000);
}catch(Exception e){
e.printStackTrace();
}
}
}
}