logback 日誌輸出格式
前言
日誌對一個系統的重要性不言而喻;日誌通常是在排查問題時給人看,一個友好的輸出樣式讓人看到後賞心悅目,排查效率通常也會隨之提高;下面為大家共享一下透過設定logback日誌輸出格式,列印出令人欣喜的日誌樣式。
一、未指定日誌格式,日誌輸出
1、程式碼實現
(1)演示日誌輸出控制器
/*
* Copyright (c) 2019. zhanghan_java@163.com All Rights Reserved.
* 專案名稱:實戰SpringBoot
* 類名稱:CheckMobileController.java
* 建立人:張晗
* 聯絡方式:zhanghan_java@163.com
* 開源地址:
* 部落格地址: https://zhanghan.blog.csdn.net
*/
package com.zhanghan.zhboot.controller;
import com.mysql.jdbc.StringUtils;
import com.zhanghan.zhboot.controller.request.MobileCheckRequest;
import com.zhanghan.zhboot.properties.MobilePreFixProperties;
import com.zhanghan.zhboot.util.wrapper.WrapMapper;
import com.zhanghan.zhboot.util.wrapper.Wrapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@RestController
@Api(value = "校驗手機號控制器", tags = {"校驗手機號控制器"})
public class CheckMobileController {
private static Logger logger = LoggerFactory.getLogger(CheckMobileController.class);
@Autowired
private MobilePreFixProperties mobilePreFixProperties;
@ApiOperation(value = "優雅校驗手機號格式方式", tags = {"校驗手機號控制器"})
@RequestMapping(value = "/good/check/mobile", method = RequestMethod.POST)
public Wrapper goodCheckMobile(@RequestBody @Validated MobileCheckRequest mobileCheckRequest) {
logger.info("good check mobile param {}", mobileCheckRequest.toString());
String countryCode = mobileCheckRequest.getCountryCode();
String proFix = mobilePreFixProperties.getPrefixs().get(countryCode);
if (StringUtils.isNullOrEmpty(proFix)) {
logger.error("good check mobile param is error; param is {}, profix is {}", mobileCheckRequest.toString(), proFix);
return WrapMapper.error("引數錯誤");
}
String mobile = mobileCheckRequest.getMobile();
Boolean isLegal = false;
if (mobile.startsWith(proFix)) {
isLegal = true;
}
Map map = new HashMap();
map.put("mobile", mobile);
map.put("isLegal", isLegal);
map.put("proFix", proFix);
return WrapMapper.ok(map);
}
@ApiOperation(value = "擴充套件性差校驗手機號格式方式", tags = {"校驗手機號控制器"})
@RequestMapping(value = "/bad/check/mobile", method = RequestMethod.POST)
public Wrapper badCheckMobile(@RequestBody MobileCheckRequest mobileCheckRequest) {
logger.info("bad check mobile param {}", mobileCheckRequest.toString());
String countryCode = mobileCheckRequest.getCountryCode();
String proFix = "";
if (countryCode.equals("CN")) {
proFix = "86";
} else if (countryCode.equals("US")) {
proFix = "1";
} else { 無錫看婦科的醫院
logger.error("bad check mobile param is error; param is {}, profix is {}", mobileCheckRequest.toString(), proFix);
return WrapMapper.error("引數錯誤");
}
String mobile = mobileCheckRequest.getMobile();
Boolean isLegal = false;
if (mobile.startsWith(proFix)) {
isLegal = true;
}
Map map = new HashMap();
map.put("mobile", mobile);
map.put("isLegal", isLegal);
map.put("proFix", proFix);
return WrapMapper.ok(map);
}
}
2、專案部署伺服器後訪問列印日誌的效果
二、指定日誌格式,日誌輸出
1、程式碼實現
(1)演示日誌輸出控制器(同上)
(2)在專案的resources目錄下增加logback.xml設定列印格式,logback.xml內容如下:
%d{yyyy-MM-dd HH:mm:ss} %highlight(%-5level) %green([${LOG_HOME},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}]) %magenta(${PID:-}) %white(---) %-20(%yellow([%20.20thread])) %-55(%cyan(%.32logger{30}:%L)) %highlight(- %msg%n)
UTF-8
${LOG_PATH}/${appName}-log-console-%d{yyyy-MM-dd}.%i.log.zip
${maxSaveDays}
${maxFileSize}
%d{yyyy-MM-dd HH:mm:ss} %highlight(%-5level) %green([${LOG_HOME},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}]) %magenta(${PID:-}) %white(---) %-20(%yellow([%20.20thread])) %-55(%cyan(%.32logger{30}:%L)) %highlight(- %msg%n)
UTF-8
${LOG_PATH}/${appName}-log-info-%d{yyyy-MM-dd}.%i.log.zip
${maxSaveDays}
${maxFileSize}
%d{"yyyy-MM-dd HH:mm:ss,SSS"}[%X{userId}|%X{sessionId}][%p][%c{0}-%M]-%m%n
UTF-8
ERROR
DENY
ACCEPT
${LOG_PATH}/${appName}-log-error-%d{yyyy-MM-dd}.%i.log.zip
${maxSaveDays}
${maxFileSize}
%d{"yyyy-MM-dd HH:mm:ss,SSS"}[%X{userId}|%X{sessionId}][%p][%c{0}-%M]-%m%n
UTF-8
ERROR
ACCEPT
DENY
level="INFO"/>
3、專案部署伺服器後訪問列印日誌的效果
4、檢視日誌記錄檔案,效果也一樣,效果圖:
三、專案地址
1、地址:
2、程式碼版本:1.5.0-Release
【總結】
1、透過設定日誌格式,輸出的樣式更加人性化,錯誤也更加明顯;
2、這個小小的改變,使得在排查程式時更加的賞心悅目,心情上的開心將在無形中增加排錯的效率。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69945560/viewspace-2658351/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- logback下日誌輸出前處理操作——以日誌脫敏為例
- Java 日誌框架 LogbackJava框架
- 【Logback日誌級別】動態調整Logback的日誌級別
- 常見日誌輸出目標(Logback | Log4j2 | Java Util Logging)Java
- Spring Boot 整合 Logback 日誌Spring Boot
- Spring Boot logback日誌配置Spring Boot
- python如何輸出日誌?Python
- Java日誌框架:logback詳解Java框架
- Golang:將日誌以Json格式輸出到KafkaGolangJSONKafka
- python日誌重複輸出Python
- Springboot 整合logback 日誌框架簡介Spring Boot框架
- 在SpringBoot中使用Logback管理日誌Spring Boot
- Spring boot日誌---slf4j+logbackSpring Boot
- springboot專案配置logback日誌系統Spring Boot
- 指令碼日誌的標準輸出指令碼
- C#按照日期輸出程式日誌C#
- Java 如何正確地輸出日誌Java
- 操作日誌記錄(包括輸出至自定義日誌檔案)
- 禁用 Logback 中特定類的日誌記錄
- logback接入到阿里雲sls日誌服務阿里
- springboot+logback日誌非同步資料庫Spring Boot非同步資料庫
- 今天講講Java中的日誌—logging、logbackJava
- springboot使用logback記錄日誌,配置檔案Spring Boot
- 今天講講Java中的日誌---logging、logbackJava
- Robotframework-ride 日誌輸出中文亂碼FrameworkIDE
- logrus hook輸出日誌到本地磁碟Hook
- Logback詳細整理,基於springboot的日誌配置Spring Boot
- springboot logback配置mybatis 日誌以及多環境配置Spring BootMyBatis
- Nginx日誌格式設定Nginx
- 自定義Nginx日誌格式Nginx
- Linux nohup 啟動服務且不輸出日誌Linux
- 使用Log4j2輸出日誌演示
- python怎麼將列印輸出日誌檔案Python
- linux自動清理Docker標準輸出日誌LinuxDocker
- (定時)任務輸出重定向到日誌
- log4j日誌輸出級別(轉)
- 失敗登入行為輸出至alert日誌
- log4j2分層輸出日誌