在Java项目中引入日志

日志(log)
主要用来记录系统运行中一些重要操作信息
便于监视系统运行情况,帮助用户提前发现和避开可能出现的问题,或者出现问题后根据日志找到原因
日志分类:
SQL日志、异常日志、业务日志
可以自己写个日志记录的小工具
log4j是一个非常优秀的开源日志框架
控制日志的输出级别
控制日志信息输送的目的地是控制台、文件等
控制每一条日志的输出格式
使用步骤:
1.在项目中加入log4j所使用的JARb包注意jar包的版本问题
2.创建log4j.properties文件
3.编写log4j.properties,配置日志信息
jar包使用注意两点:1.jar包不能被破坏 2.jar包不能冲突
日志的级别:
Fatal 致命错误 > Error 错误 异常 >Warning 警告
info(提示信息)>Debug调试 辅助调试工具远程调试
打日志很耗费性能(debug轻易不用只有当用户使用现场出现严重错误才会debug)
如果写debug那么比debug高的信息都会打出来
使用步骤:1)引入jar包
2)引入 修改配置文件中日志名称
4)写个放日志类的包 创建一个封装log的日之类
public class Log {
public static Logger getLog()
{
//通过反射机制动态获取日志的记录位置
return Logger.getLogger(Logger.class.getName());
}
}
所有catch的地方必须使用Log.getLogger().erro("错误信息")记录下来
简单的使用:
public class Login {

public static void main(String[] args) {
// TODO Auto-generated method stub
Log.getLog().info("小花花"+"-------->开始登陆系统");

//打印调试信息
Log.getLog().debugg("password"+"username");
try{
int a=5/0;
}
catch (Exception e) {
// TODO: handle exception
Log.getLog().error(e.toString()+" ");
}
}

}
运行程序之后就在控制台打印出来日志的内容,之所以在控制台打印是因为在配置文件中配置了log4j.appender.AA=org.apache.log4j.ConsoleAppender
实际日志生成的文件去项目文件夹中去找 XXX.log
并不是所有日志都用debug日志,只有关键复杂地方写debug日志
log4j.rootLogger=INFO,AA,BB info日志
log4j.rootLogger=DEBUG,AA,BB debug日志































Java类中引入日志功能时,测试过程中出现报错是常见的问题。此类问题通常涉及日志框架的配置、依赖缺失或代码编写不当等原因。 ### 日志功能引入报错的常见原因及解决方法 #### 1. **依赖缺失或版本冲突** - Java中常用日志框架包括Log4j、Logback、SLF4J等,这些框架通常需要引入对应的依赖库。 - 如果项目中未正确引入依赖,或不同依赖之间存在版本冲突,可能导致运行时报错。 - **解决方案**:检查项目的`pom.xml`(Maven)或`build.gradle`(Gradle)文件,确保相关依赖正确引入且版本兼容。例如,对于Logback,需要引入如下Maven依赖: ```xml <dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.11</version> </dependency> ``` #### 2. **日志配置文件缺失或错误** - 日志框架通常依赖于配置文件(如`logback.xml`、`log4j.properties`等)进行初始化。 - 如果配置文件缺失或配置错误,会导致日志初始化失败,从而引发报错。 - **解决方案**:确保配置文件位于正确的路径下(如`src/main/resources`),并检查配置语法是否正确。例如,一个基本的`logback.xml`配置如下: ```xml <configuration> <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <root level="info"> <appender-ref ref="STDOUT" /> </root> </configuration> ``` #### 3. **日志记录器未正确初始化** - 在代码中未正确初始化日志记录器(Logger),也可能导致运行时报错。 - 常见错误包括未正确获取类的Logger实例,或使用了错误的日志框架API。 - **解决方案**:确保使用正确的日志框架API初始化Logger。例如,使用SLF4J和Logback时,代码应如下: ```java import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ExampleClass { private static final Logger logger = LoggerFactory.getLogger(ExampleClass.class); public void doSomething() { logger.info("This is an info message."); } } ``` #### 4. **日志输出路径或权限问题** - 如果日志配置中指定了文件输出路径,但路径不存在或程序没有写入权限,也会导致日志记录失败。 - **解决方案**:检查日志输出路径是否存在,并确保运行环境具有写入权限。例如,在`logback.xml`中配置文件日志输出: ```xml <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>/var/log/myapp.log</file> <encoder> <pattern>%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> ``` #### 5. **异常处理不当导致日志信息不完整** - 在捕获异常时,如果未正确记录异常堆栈信息,可能导致调试困难。 - **解决方案**:确保在记录异常时打印完整的堆栈信息。例如: ```java try { // 业务逻辑 } catch (Exception e) { logger.error("An error occurred", e); } ``` #### 6. **日志级别设置不当** - 如果日志级别设置过高(如设置为`ERROR`),可能导致部分日志信息未被记录。 - **解决方案**:根据调试需求调整日志级别。例如,在`logback.xml`中设置日志级别为`DEBUG`: ```xml <root level="debug"> <appender-ref ref="STDOUT" /> </root> ``` ### 总结 在Java类中引入日志功能时,测试报错的原因可能涉及依赖管理、配置文件、日志记录器初始化、文件路径权限、异常处理及日志级别设置等多个方面。通过逐一排查这些潜在问题,可以有效解决测试中的日志报错问题[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值