1.首先在pom中引入相关jar包
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>${slf4j.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>${slf4j.version}</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>${log4j.version}</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>${log4j.version}</version>
</dependency>
2.配置相关的log4j2.xml
<?xml version="1.0" encoding="UTF-8" ?>
<Configuration>
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss} [%-5p %marker](%C:%L) %m%n" />
</Console>
<File name="FILE"
fileName="${sys:catalina.home}/logs/日志名字.log">
<PatternLayout
pattern="%d{yyyy-MM-dd HH:mm:ss} [%-5p %marker](%C:%L) %m%n" />
</File>
</Appenders>
<Loggers>
<Logger name="产生日志包" level="debug" additivity="false">
<AppenderRef ref="STDOUT" />
<AppenderRef ref="FILE" />
</Logger>
<Logger name="产生日志包" level="debug" additivity="false">
<AppenderRef ref="STDOUT" />
<AppenderRef ref="FILE" />
</Logger>
<Root level="warn">
<AppenderRef ref="STDOUT" />
<AppenderRef ref="Async" />
</Root>
</Loggers>
</Configuration>
<logger>标签的作用:为不同的包使用不同的log配置。
如配置了
<Logger name="产生日志包" level="debug" additivity="false">
<AppenderRef ref="STDOUT" />
<AppenderRef ref="FILE" />
</Logger>
则包及其子包下的所有类使用的log配置都是debug,且输出到FILE
其他类使用的log配置都是根logger
logger的默认配置具有继承特性, 即所有的logger配置继承根logger,
name为“a.b.c"的logger配置继承name为"a.b"的配置, name为"a.b"又继承name为"a"的logger而配置。。。
若使用了additivity="false"表示不继承父logger的配置。
3.使用@Log4j2相关注解
4.通过try...catch以及抛出异常,将异常写入文件 Java异常处理主要通过5个关键字控制:try、catch、throw、throws和finally。try的意思是试试它所包含的代码段中是否会发生异常;而catch当有异常时抓住它,并进行相应的处理,使程序不受异常的影响而继续执行下去;throw是在程序中明确引发异常;throws的作用是如果一个方法可以引发异常,而它本身并不对该异常处理,那么它必须将这个异常抛给调用它的方法;finally是无论发不发生异常都要被执行的代码
关键字:throw,throws,try和catch的用法如下:
1、throws出现在方法的声明中,表示该方法可能会抛出的异常,允许throws后面跟着多个异常类型
2、throw出现在方法体中,用于抛出异常。当方法在执行过程中遇到异常情况时,将异常信息封装为异常对象,然后throw。
3、try出现在方法体中,它自身是一个代码块,表示尝试执行代码块的语句。如果在执行过程中有某条语句抛出异常,那么代码块后面的语句将不被执行。
4、catch出现在try代码块的后面,自身也是一个代码块,用于捕获异常try代码块中可能抛出的异常。catch关键字后面紧接着它能捕获的异常类型,所有异常类型的子类异常也能被捕获。