石家庄城乡建设网站,谷歌优化方法,wordpress codeus,wordpress多媒体图片问题记录
1、遇到长流程的时候#xff0c;日志记录是非常重要的。如何排查日志#xff0c;可以在MDC中去put对应的值#xff0c;这样就等于对你关心的关键字段加上了索引#xff0c;在elk中可以通过该索引就能 容易排查到问题
logback的设置 可以参照#xff1a;
【总体…问题记录
1、遇到长流程的时候日志记录是非常重要的。如何排查日志可以在MDC中去put对应的值这样就等于对你关心的关键字段加上了索引在elk中可以通过该索引就能 容易排查到问题
logback的设置 可以参照
【总体日志】
?xml version1.0 encodingUTF-8?
configurationproperty nameCHARSET valueUTF-8 /!-- 使用SkyWalking提供的traceID --conversionRule conversionWordtid converterClassorg.apache.skywalking.apm.toolkit.log.logback.v1.x.LogbackPatternConverter/!-- 使用application.yml配置 --springProperty scopecontext nameLOG_HOME sourcelogging.file.path /property nameLOG_PATTERN value%d{yyyy-MM-dd HH:mm:ss:SSS} %highlight([%tid] [%X{X-B3-TraceId}] [%p]) %boldYellow(%c{36}) - %m%n /include resourcelogback/logback-project.xml/
!-- include resourcelogback/logback-request.xml/--include resourcelogback/logback-error.xml/!-- 总日志输出到控制台 --appender nameSTDOUT classch.qos.logback.core.ConsoleAppenderencoderpattern${LOG_PATTERN}/patterncharset${CHARSET}/charset/encoder/appenderroot levelINFOappender-ref refSTDOUT /appender-ref refPROJECT_APPENDER /appender-ref refERROR_APPENDER //root
/configuration【业务日志】
!-- 这里配置项目业务日志--
included!-- 项目业务日志Appender --appender namePROJECT_APPENDER classch.qos.logback.core.rolling.RollingFileAppenderfile${LOG_HOME}/project.log/filerollingPolicy classch.qos.logback.core.rolling.TimeBasedRollingPolicyfileNamePattern${LOG_HOME}/project-%d{yyyyMMdd}.%i.log/fileNamePatterntimeBasedFileNamingAndTriggeringPolicy classch.qos.logback.core.rolling.SizeAndTimeBasedFNATPmaxFileSize500MB/maxFileSize/timeBasedFileNamingAndTriggeringPolicy/rollingPolicyfilter classch.qos.logback.classic.filter.LevelFilterlevelERROR/levelonMatchDENY/onMatchonMismatchACCEPT/onMismatch/filterappendtrue/appendencoder classnet.logstash.logback.encoder.LoggingEventCompositeJsonEncoderproviderspatternpattern{logtime:%date{yyyy-MM-dd HH:mm:ss.SSS},traceId:%tid,level:%level,seq:%X{seq},offset:%X{offset},partition:%X{partition},threadName:%thread,className:%class,content:%message,stackTrace:%exception{10}}/pattern/pattern/providers/encoder/appenderlogger namecom.myhexin.zixun.cmp.review.server levelDEBUGappender-ref refPROJECT_APPENDER //logger
/included【aop切面类】
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.annotation.Around;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Pointcut;
import org.slf4j.MDC;
import org.springframework.stereotype.Component;import java.util.UUID;/*** description:* author: liuzhihuimyhexin.com* date: 2021/6/3 10:58**/Aspect
Component
Slf4j
public class NewsOfflineAspect {private final String POINT_CUT execution(* com.myhexin.zixun.server.content.operate.deploy.domain.news.service.impl.OfflineOrOnlineServiceImpl.offlineOrOnlineNews(..));Pointcut(POINT_CUT)public void pointCut() {}Around(value pointCut())public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {Object[] args joinPoint.getArgs();String s String.valueOf(args[0]);String seq StringUtils.substringBetween(s, seq, ));if (StringUtils.isNotEmpty(seq)) {MDC.put(seq, seq);} else {MDC.put(seq, Random- UUID.randomUUID().toString());}try {return joinPoint.proceed();} catch (Throwable throwable) {log.error(入参 {} , JSONUtil.toJsonStr(args), throwable);throw throwable;} finally {MDC.remove(seq);}}
}业务日志里的log patter放了seq 字段那就可以在进入aop的时候 打上seq作为日志的字段索引然后在处理流程结束的时候拿出seq字段索引这样排查的时候就可以根据这个字段来排查了。 同样的如果是kafka的接受类你可以把 offset和partition作为字段索引也是及其好用的。