java main方法控制日志级别

本文介绍了在main方法执行时遇到大量HTTP请求日志干扰正常输出的问题,以及如何通过修改日志级别来解决。默认情况下,日志级别为debug,会打印详尽信息,包括第三方框架的http请求报文。为了专注于自己的业务输出,可以在类静态代码块中设置日志级别为ERROR,只显示错误及以上级别的日志。日志级别从高到低为OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE, ALL。建议生产环境中设置为INFO或WARN,以避免日志泛滥。
部署运行你感兴趣的模型镜像

背景:

今天想用main方法去调用http请求,结果已经没什么问题了,但是打印了一大堆Http业务内部的日志信息,特别挡路,导致想看到的业务输出看不到,所以经过多方求证,进行了日志等级处理。

默认情况下,如果项目中集成了Logback等日志框架,在执行main方法时通过其进行日志打印,那么默认的日志级别是debug的。

此时,如果是http请求,甚至可以把请求的具体报文信息都打印出来,特别是三方框架的。为了不影响查看正常的日志,可以将main方法的日志级别进行调整。

此时,配置Logback的logback.xml文件或配置项目的日志输出(比如spring boot)是无效的,只需在类静态代码块中添加以下代码即可。

static {
	LoggerContext loggerContext = (LoggerContext) LoggerFactory.getILoggerFactory();
	List<ch.qos.logback.classic.Logger> loggerList = loggerContext.getLoggerList();
	loggerList.forEach(logger -> {
		logger.setLevel(Level.ERROR);
	});
}

我把我的日志级别调成了error,主要我是做main方法测试,只想看到自己打印的内容

另附:log日志级别顺序

 OFF | 关闭:最高级别,不打印日志。 
FATAL | 致命:指明非常严重的可能会导致应用终止执行错误事件。 
ERROR | 错误:指明错误事件,但应用可能还能继续运行。
WARN | 警告:指明可能潜在的危险状况。 
INFO | 信息:指明描述信息,从粗粒度上描述了应用运行过程。 
DEBUG | 调试:指明细致的事件信息,对调试应用最有用。 
TRACE | 跟踪:指明程序运行轨迹,比DEBUG级别的粒度更细。 
ALL | 所有:所有日志级别,包括定制级别。

所以,日志优先级别标准顺序为:

ALL < TRACE < DEBUG < INFO < WARN < ERROR < FATAL < OFF

如果日志级别设置INFO,只有输出级别为INFO、WARNERROR 、FATAL、 OFF等后面的日志才会正常输出。

建议生产中设置info或者warn,附则容易日志泛滥

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

<think> 首先,用户的问题是:“java如何设置当前日志级别”,我需要用中文回答。 关键点: - Java 中的日志级别通常涉及日志框架,如 java.util.logging(JUL)、Log4j、Slf4j 等。 - 我需要解释如何设置日志级别,这可能因框架而异。 - 回答后,我必须提出3-5个 §§相关问题§§,并在末尾输出,第一行必须是“§§相关问题§§”。 - §§相关问题§§ 必须基于用户的问题和我的回答。 - 格式:回答后直接输出“§§相关问题§§”,然后列出问题,禁止换行分散。 我的回答结构: 1. 先回答问题:解释如何在Java中设置日志级别。 - 简要介绍常见日志框架。 - 提供设置级别的通用方法或示例。 - 例如,使用java.util.logging:通过Logger对象设置级别。 - 使用Log4j:通过配置文件或编程方式。 - 强调这取决于具体框架。 2. 然后,在末尾添加“§§相关问题§§”,列出3-5个相关问题。 - 问题应该相关,比如扩展主题或加深理解。 - 例如:如何动态更改日志级别?不同日志框架的比较?等。 现在,构思回答内容: - Java 日志级别设置: - 在 java.util.logging (JUL) 中: - 获取 Logger 对象:Logger logger = Logger.getLogger("your.logger.name"); - 设置级别:logger.setLevel(Level.INFO); // 例如设置到 INFO - 或者通过配置文件 logging.properties。 - 在 Log4j 中: - 使用 log4j.properties 或 log4j2.xml 设置。 - 例如:log4j.logger.your.package=DEBUG - 在 Slf4j 中(它是门面,需要后端实现如Logback): - 使用 logback.xml 设置。 - 例如:<logger name="your.package" level="DEBUG"/> - 通用建议:通常通过配置文件设置。 代码示例:由于用户提到了代码,我可以提供一个简单示例。 - 例如,使用 JUL: ```java import java.util.logging.*; public class LogExample { private static final Logger logger = Logger.getLogger(LogExample.class.getName()); public static void main(String[] args) { logger.setLevel(Level.FINE); // 设置日志级别为 FINE logger.info("This is an info message"); // 会输出 logger.fine("This is a fine message"); // 会输出 } } ``` 然后,输出 §§相关问题§§。 提出的问题: 1. 如何动态更改日志级别而不重启应用? 2. Java 中常见的日志级别有哪些? 3. 如何配置日志输出到文件而不是控制台? 4. 不同日志框架(如 JUL、Log4j、Logback)设置日志级别有何区别? 5. 在微服务架构中如何管理日志级别? 确保问题数量:3-5个。 最终输出格式: - 回答内容(包括任何代码块)。 - 然后一行“§§相关问题§§”。 - 接着1. 2. 3. 列出问题。 </think>在Java中,设置日志级别通常依赖于所使用的日志框架,如java.util.logging(JUL)、Log4j、SLF4j(配合Logback等后端)。以下是常见方法的简要说明和示例: ### 1. **使用 java.util.logging(Java标准库)** - 通过编程方式设置: ```java import java.util.logging.*; public class LoggingExample { private static final Logger logger = Logger.getLogger(LoggingExample.class.getName()); public static void main(String[] args) { // 设置当前日志级别为 INFO(可选值:SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST) logger.setLevel(Level.INFO); // 测试日志输出 logger.info("信息级别日志"); // 会输出 logger.fine("调试级别日志"); // 不会输出,因为级别低于 INFO } } ``` - 通过配置文件(例如 `logging.properties`): ``` handlers=java.util.logging.ConsoleHandler .level=INFO # 全局日志级别 com.example.package.level=FINE # 特定包或类级别 java.util.logging.ConsoleHandler.level=INFO ``` 运行程序时指定配置文件: `java -Djava.util.logging.config.file=logging.properties LoggingExample` ### 2. **使用 Log4j2** - 通过配置文件(例如 `log4j2.xml`): ```xml <Configuration> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <!-- 设置全局日志级别为 INFO --> <Root level="info"> <AppenderRef ref="Console"/> </Root> <!-- 设置特定包的级别为 DEBUG --> <Logger name="com.example.package" level="debug"/> </Loggers> </Configuration> ``` - 编程方式(较少用): ```java import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.core.config.Configurator; public class Log4jExample { public static void main(String[] args) { // 设置特定Logger的级别 Configurator.setLevel("com.example.package", Level.DEBUG); } } ``` ### 3. **使用 SLF4j + Logback** - 通过配置文件(例如 `logback.xml`): ```xml <configuration> <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>%d{HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n</pattern> </encoder> </appender> <!-- 设置root日志级别为 INFO --> <root level="INFO"> <appender-ref ref="CONSOLE"/> </root> <!-- 设置特定包的级别为 DEBUG --> <logger name="com.example.package" level="DEBUG"/> </configuration> ``` ### 关键注意事项: - **日志级别顺序**:通常为 TRACE, DEBUG, INFO, WARN, ERROR, FATAL(框架间略有差异)。设置级别后,只有等于或高于该级别的日志会输出。 - **动态调整**:在生产环境中,可使用JMX或框架特定工具(如Log4j的AdminUI)在不重启下更改级别。 - **框架选择**:推荐使用SLF4j作为门面,配合Logback或Log4j2,以保持灵活性。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Alex_81D

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值