记录日志logback

所放文件位置

spring自带,不需要引入任何依赖
image

配置文件内容

<?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;
    }
}
posted @ 2021-12-22 12:46  孙家湾  阅读(107)  评论(0)    收藏  举报