记录日志logback
所放文件位置
spring自带,不需要引入任何依赖

配置文件内容
<?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">
<!--格式化输出:%d表示日期,%thread表示线程名,%-5level:级别从左显示5个字符宽度%msg:日志消息,%n是换行符-->
<!-- %c 输出logger名称-->
<!-- %C 输出类名-->
<!-- %d{HH:mm:ss.SSS} 表示输出到毫秒的时间-->
<!-- %t 输出当前线程名称-->
<!-- %-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0-->
<!-- %logger 输出logger名称,因为Root Logger没有名称,所以没有输出-->
<!-- %msg 日志文本-->
<!-- %n 换行-->
<!-- 其他常用的占位符有:-->
<!-- %F 输出所在的类文件名,如Log4j2Test.java-->
<!-- %L 输出行号-->
<!-- %M或%method 输出所在方法名-->
<!-- %l 输出完整的错误位置, 包括类名、方法名、文件名、行数-->
<!-- %p 该条日志的优先级-->
<!-- replace(p ){r, t} p 为日志内容,r 是正则表达式,将p 中符合r 的内容替换为t 例如, "%replace(%msg){'\s', ''}"-->
<!-- caller{1}表示调用层次深度=》1表示调用层-->
<!-- %red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger) - (%msg%n) -->
<contextName>logback</contextName>
<property name="log.path" value="/Users/tengjun/Documents/log" />
<!--application.yml 传递参数,不能使用logback 自带的<property>标签 -->
<springProperty scope="context" name="appName" source="logback.appName"/>
<springProperty scope="context" name="logDir" source="logback.logDir"/>
<!-- 日志级别排序为: TRACE < DEBUG < INFO < WARN < ERROR -->
<!--输出到控制台-->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<!-- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
<level>ERROR</level>
</filter>-->
<encoder>
<pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} | %highlight(%-5level) | %boldYellow(%thread) | %boldGreen(%logger) | %msg%n"</pattern>
</encoder>
</appender>
<!--输出到文件-->
<appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>${logDir}/${appName}.%d{yyyy-MM-dd}.log</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder>
<pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger - %msg%n</pattern>
</encoder>
</appender>
<!-- 测试环境+开发环境. 多个使用逗号隔开. -->
<springProfile name="test,dev">
<logger name="com.medaxis.log.controller" level="DEBUG" additivity="false">
<appender-ref ref="console"/>
<appender-ref ref="file"/>
</logger>
</springProfile>
<!-- 生产环境. -->
<springProfile name="prod">
<logger name="com.medaxis.log.controller" level="INFO" additivity="false">
<appender-ref ref="console"/>
<appender-ref ref="file"/>
</logger>
</springProfile>
<root level="info">
<appender-ref ref="console" />
</root>
</configuration>
示例
package com.medaxis.log.controller;
import com.medaxis.log.domain.User;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.HashMap;
import java.util.Map;
@Controller
public class LearnController {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@RequestMapping(value = "/login",method = RequestMethod.POST)
@ResponseBody
public Map<String,Object> login(HttpServletRequest request, HttpServletResponse response){
//日志级别从低到高分为TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出。
logger.trace("日志输出 trace");
logger.debug("日志输出 debug");
logger.info("日志输出 info");
logger.warn("日志输出 warn");
logger.error("日志输出 error");
Map<String,Object> map =new HashMap<String,Object>();
String userName=request.getParameter("userName");
String password=request.getParameter("password");
if(!userName.equals("") && password!=""){
User user =new User(userName,password);
request.getSession().setAttribute("user",user);
map.put("result","1");
}else{
map.put("result","0");
}
return map;
}
}
学习使我快乐

浙公网安备 33010602011771号