Java日志管理之logback
只要引入logback的依赖,就可以在控制台使用默认格式输出:
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <version>1.2.3</version> </dependency>
在resourses中创建logback.xml配置文件,就可以配置日志:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!--定义一个向控制台输出的追加器--> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <!-- %thread:线程名字 %d:产生日志时间 %level:产生日志的级别 %logger{10}:由那个类产生的日志,如果超过10个长度则进行缩写 --> <pattern>[%thread] %d %level %logger{10} - %msg%n</pattern> </encoder> </appender> <!--日志的最低输出级别为debug,输出地址为控制台--> <root level="debug"> <appender-ref ref="console"/> </root> </configuration>
如果想配置日滚动文件,可以添加如下追加器:
<!--RollingFileAppender追加器用于生成按天滚动的日志文件--> <appender name="accessHistoryLog" class="ch.qos.logback.core.rolling.RollingFileAppender"> <!--rollingPolicy滚动策略,TimeBasedRollingPolicy按照时间进行滚动--> <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> <!--配置日志存储路径--> <fileNamePattern>C:\java_study\project\restful\log\restful.%d.log</fileNamePattern> </rollingPolicy> <!--定义日志输出的格式--> <encoder> <pattern>[%thread] %d %level %logger{10} - %msg%n</pattern> </encoder> </appender> <!--AccessHistoryInterceptor这个类所产生的日志都会使用下面标签所产生的规则--> <!--additivity是否向控制台输出,false在只会向指定规则下输出--> <logger name="com.ikidana.restful.interceptor.AccessHistoryInterceptor" level="info" additivity="false"> <appender-ref ref="accessHistoryLog"/> </logger>
然后就可以填入信息了:
public class AccessHistoryInterceptor implements HandlerInterceptor {
//创建一个logger日志对象
private Logger logger = (Logger) LoggerFactory.getLogger(AccessHistoryInterceptor.class);
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
StringBuilder log = new StringBuilder();
log.append(request.getRemoteAddr()); //地址
log.append("|");
log.append(request.getRequestURL()); //URL
log.append("|");
log.append(request.getHeader("user-agent"));
logger.info(log.toString());
return true;
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理