add module log
This commit is contained in:
parent
cceb8032b7
commit
a9d10b32fc
|
@ -0,0 +1 @@
|
||||||
|
logging.file.path=/opt/metersphere/logs/metersphere/
|
|
@ -0,0 +1,471 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<configuration debug="true">
|
||||||
|
<property resource="application.properties"/>
|
||||||
|
<property resource="commons.properties"/>
|
||||||
|
<property file="/opt/metersphere/conf/metersphere.properties"/>
|
||||||
|
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>%d %5p %40.40c:%4L - %m%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="debugAppender"
|
||||||
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<level>DEBUG</level>
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
<File>${logging.file.path}/debug.log</File>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<FileNamePattern>${logging.file.path}/history/debug.%d{yyyyMMdd}-%i.log
|
||||||
|
</FileNamePattern>
|
||||||
|
<maxHistory>${logger.max.history:-30}</maxHistory>
|
||||||
|
<TimeBasedFileNamingAndTriggeringPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||||
|
<maxFileSize>50MB</maxFileSize>
|
||||||
|
</TimeBasedFileNamingAndTriggeringPolicy>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
<Pattern>%d [%thread] %-5level %logger{36} %line - %msg%n</Pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="infoAppender"
|
||||||
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<File>${logging.file.path}/info.log</File>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<FileNamePattern>${logging.file.path}/history/info.%d{yyyyMMdd}-%i.log
|
||||||
|
</FileNamePattern>
|
||||||
|
<maxHistory>${logger.max.history:-30}</maxHistory>
|
||||||
|
<TimeBasedFileNamingAndTriggeringPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||||
|
<maxFileSize>50MB</maxFileSize>
|
||||||
|
</TimeBasedFileNamingAndTriggeringPolicy>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
<Pattern>%d [%thread] %-5level %logger{36} %line - %msg%n</Pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="errorAppender"
|
||||||
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<level>ERROR</level>
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
|
||||||
|
<File>${logging.file.path}/error.log</File>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<FileNamePattern>${logging.file.path}/history/error.%d{yyyyMMdd}-%i.log
|
||||||
|
</FileNamePattern>
|
||||||
|
<maxHistory>${logger.max.history:-30}</maxHistory>
|
||||||
|
<TimeBasedFileNamingAndTriggeringPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||||
|
<maxFileSize>50MB</maxFileSize>
|
||||||
|
</TimeBasedFileNamingAndTriggeringPolicy>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
<Pattern>%d [%thread] %-5level %logger{36} %line - %msg%n</Pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="warnAppender"
|
||||||
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.LevelFilter">
|
||||||
|
<level>WARN</level>
|
||||||
|
<onMatch>ACCEPT</onMatch>
|
||||||
|
<onMismatch>DENY</onMismatch>
|
||||||
|
</filter>
|
||||||
|
<File>${logging.file.path}/warn.log</File>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<FileNamePattern>${logging.file.path}/history/warn.%d{yyyyMMdd}-%i.log
|
||||||
|
</FileNamePattern>
|
||||||
|
<maxHistory>${logger.max.history:-30}</maxHistory>
|
||||||
|
<TimeBasedFileNamingAndTriggeringPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||||
|
<maxFileSize>50MB</maxFileSize>
|
||||||
|
</TimeBasedFileNamingAndTriggeringPolicy>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
<Pattern>%d [%thread] %-5level %logger{36} %line - %msg%n</Pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="consoleAsyncAppender" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>DEBUG</level>
|
||||||
|
</filter>
|
||||||
|
<queueSize>10000</queueSize>
|
||||||
|
<appender-ref ref="console"/>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="debugAsyncAppender" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>DEBUG</level>
|
||||||
|
</filter>
|
||||||
|
<queueSize>10000</queueSize>
|
||||||
|
<appender-ref ref="debugAppender"/>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="infoAsyncAppender" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<queueSize>10000</queueSize>
|
||||||
|
<appender-ref ref="infoAppender"/>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="errorAsyncAppender" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>ERROR</level>
|
||||||
|
</filter>
|
||||||
|
<queueSize>10000</queueSize>
|
||||||
|
<includeCallerData>true</includeCallerData>
|
||||||
|
<appender-ref ref="errorAppender"/>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<appender name="warnAsyncAppender" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>WARN</level>
|
||||||
|
</filter>
|
||||||
|
<queueSize>10000</queueSize>
|
||||||
|
<includeCallerData>true</includeCallerData>
|
||||||
|
<appender-ref ref="warnAppender"/>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- 自定义api-test模块日志 -->
|
||||||
|
<appender name="apiAppender"
|
||||||
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<File>${logging.file.path}/api-test.log</File>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<FileNamePattern>${logging.file.path}/history/api-test.%d{yyyyMMdd}-%i.log
|
||||||
|
</FileNamePattern>
|
||||||
|
<maxHistory>${logger.max.history:-30}</maxHistory>
|
||||||
|
<TimeBasedFileNamingAndTriggeringPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||||
|
<maxFileSize>50MB</maxFileSize>
|
||||||
|
</TimeBasedFileNamingAndTriggeringPolicy>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
<Pattern>%d %t %-5level %logger{36} %line - %msg%n</Pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
<appender name="apiTestAppender" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<queueSize>10000</queueSize>
|
||||||
|
<appender-ref ref="apiAppender"/>
|
||||||
|
</appender>
|
||||||
|
<logger name="api-test" additivity="false">
|
||||||
|
<level value="${logger.level:INFO}"/>
|
||||||
|
<appender-ref ref="apiTestAppender"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<!-- 自定义load-test模块日志 -->
|
||||||
|
<appender name="loadAppender"
|
||||||
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<File>${logging.file.path}/load-test.log</File>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<FileNamePattern>${logging.file.path}/history/load-test.%d{yyyyMMdd}-%i.log
|
||||||
|
</FileNamePattern>
|
||||||
|
<maxHistory>${logger.max.history:-30}</maxHistory>
|
||||||
|
<TimeBasedFileNamingAndTriggeringPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||||
|
<maxFileSize>50MB</maxFileSize>
|
||||||
|
</TimeBasedFileNamingAndTriggeringPolicy>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
<Pattern>%d %t %-5level %logger{36} %line - %msg%n</Pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
<appender name="loadTestAppender" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<queueSize>10000</queueSize>
|
||||||
|
<appender-ref ref="loadAppender"/>
|
||||||
|
</appender>
|
||||||
|
<logger name="load-test" additivity="false">
|
||||||
|
<level value="${logger.level:INFO}"/>
|
||||||
|
<appender-ref ref="loadTestAppender"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<!-- 自定义project-management模块日志 -->
|
||||||
|
<appender name="projectAppender"
|
||||||
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<File>${logging.file.path}/project.log</File>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<FileNamePattern>${logging.file.path}/history/project.%d{yyyyMMdd}-%i.log
|
||||||
|
</FileNamePattern>
|
||||||
|
<maxHistory>${logger.max.history:-30}</maxHistory>
|
||||||
|
<TimeBasedFileNamingAndTriggeringPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||||
|
<maxFileSize>50MB</maxFileSize>
|
||||||
|
</TimeBasedFileNamingAndTriggeringPolicy>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
<Pattern>%d %t %-5level %logger{36} %line - %msg%n</Pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
<appender name="projectManagementAppender" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<queueSize>10000</queueSize>
|
||||||
|
<appender-ref ref="projectAppender"/>
|
||||||
|
</appender>
|
||||||
|
<logger name="project-management" additivity="false">
|
||||||
|
<level value="${logger.level:INFO}"/>
|
||||||
|
<appender-ref ref="projectManagementAppender"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 自定义system-setting模块日志 -->
|
||||||
|
<appender name="systemAppender"
|
||||||
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<File>${logging.file.path}/system-setting.log</File>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<FileNamePattern>${logging.file.path}/history/system-setting.%d{yyyyMMdd}-%i.log
|
||||||
|
</FileNamePattern>
|
||||||
|
<maxHistory>${logger.max.history:-30}</maxHistory>
|
||||||
|
<TimeBasedFileNamingAndTriggeringPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||||
|
<maxFileSize>50MB</maxFileSize>
|
||||||
|
</TimeBasedFileNamingAndTriggeringPolicy>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
<Pattern>%d %t %-5level %logger{36} %line - %msg%n</Pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
<appender name="systemSettingAppender" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<queueSize>10000</queueSize>
|
||||||
|
<appender-ref ref="systemAppender"/>
|
||||||
|
</appender>
|
||||||
|
<logger name="system-setting" additivity="false">
|
||||||
|
<level value="${logger.level:INFO}"/>
|
||||||
|
<appender-ref ref="systemSettingAppender"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<!-- 自定义test-plan模块日志 -->
|
||||||
|
<appender name="testPlanAppender"
|
||||||
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<File>${logging.file.path}/test-plan.log</File>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<FileNamePattern>${logging.file.path}/history/test-plan.%d{yyyyMMdd}-%i.log
|
||||||
|
</FileNamePattern>
|
||||||
|
<maxHistory>${logger.max.history:-30}</maxHistory>
|
||||||
|
<TimeBasedFileNamingAndTriggeringPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||||
|
<maxFileSize>50MB</maxFileSize>
|
||||||
|
</TimeBasedFileNamingAndTriggeringPolicy>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
<Pattern>%d %t %-5level %logger{36} %line - %msg%n</Pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
<appender name="testPlanRefAppender" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<queueSize>10000</queueSize>
|
||||||
|
<appender-ref ref="testPlanAppender"/>
|
||||||
|
</appender>
|
||||||
|
<logger name="test-plan" additivity="false">
|
||||||
|
<level value="${logger.level:INFO}"/>
|
||||||
|
<appender-ref ref="testPlanRefAppender"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<!-- 自定义test-track模块日志 -->
|
||||||
|
<appender name="testTrackAppender"
|
||||||
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<File>${logging.file.path}/test-track.log</File>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<FileNamePattern>${logging.file.path}/history/test-track.%d{yyyyMMdd}-%i.log
|
||||||
|
</FileNamePattern>
|
||||||
|
<maxHistory>${logger.max.history:-30}</maxHistory>
|
||||||
|
<TimeBasedFileNamingAndTriggeringPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||||
|
<maxFileSize>50MB</maxFileSize>
|
||||||
|
</TimeBasedFileNamingAndTriggeringPolicy>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
<Pattern>%d %t %-5level %logger{36} %line - %msg%n</Pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
<appender name="testTrackRefAppender" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<queueSize>10000</queueSize>
|
||||||
|
<appender-ref ref="testTrackAppender"/>
|
||||||
|
</appender>
|
||||||
|
<logger name="test-track" additivity="false">
|
||||||
|
<level value="${logger.level:INFO}"/>
|
||||||
|
<appender-ref ref="testTrackRefAppender"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 自定义ui-test模块日志 -->
|
||||||
|
<appender name="uiTestAppender"
|
||||||
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<File>${logging.file.path}/ui-test.log</File>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<FileNamePattern>${logging.file.path}/history/ui-test.%d{yyyyMMdd}-%i.log
|
||||||
|
</FileNamePattern>
|
||||||
|
<maxHistory>${logger.max.history:-30}</maxHistory>
|
||||||
|
<TimeBasedFileNamingAndTriggeringPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||||
|
<maxFileSize>50MB</maxFileSize>
|
||||||
|
</TimeBasedFileNamingAndTriggeringPolicy>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
<Pattern>%d %t %-5level %logger{36} %line - %msg%n</Pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
<appender name="uiTestRefAppender" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<queueSize>10000</queueSize>
|
||||||
|
<appender-ref ref="uiTestAppender"/>
|
||||||
|
</appender>
|
||||||
|
<logger name="ui-test" additivity="false">
|
||||||
|
<level value="${logger.level:INFO}"/>
|
||||||
|
<appender-ref ref="uiTestRefAppender"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- 自定义workstation模块日志 -->
|
||||||
|
<appender name="workstationAppender"
|
||||||
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<File>${logging.file.path}/workstation.log</File>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<FileNamePattern>${logging.file.path}/history/workstation.%d{yyyyMMdd}-%i.log
|
||||||
|
</FileNamePattern>
|
||||||
|
<maxHistory>${logger.max.history:-30}</maxHistory>
|
||||||
|
<TimeBasedFileNamingAndTriggeringPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||||
|
<maxFileSize>50MB</maxFileSize>
|
||||||
|
</TimeBasedFileNamingAndTriggeringPolicy>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
<Pattern>%d %t %-5level %logger{36} %line - %msg%n</Pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
<appender name="workstationRefAppender" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<queueSize>10000</queueSize>
|
||||||
|
<appender-ref ref="workstationAppender"/>
|
||||||
|
</appender>
|
||||||
|
<logger name="workstation" additivity="false">
|
||||||
|
<level value="${logger.level:INFO}"/>
|
||||||
|
<appender-ref ref="workstationRefAppender"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<!-- 自定义API执行过程日志 -->
|
||||||
|
<appender name="apiRunLogAppender"
|
||||||
|
class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<File>${logging.file.path}/ms-jmeter-run.log</File>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
|
||||||
|
<FileNamePattern>${logging.file.path}/history/ms-jmeter-run-log.%d{yyyyMMdd}-%i.log
|
||||||
|
</FileNamePattern>
|
||||||
|
<maxHistory>${logger.max.history:-30}</maxHistory>
|
||||||
|
<TimeBasedFileNamingAndTriggeringPolicy
|
||||||
|
class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
|
||||||
|
<maxFileSize>50MB</maxFileSize>
|
||||||
|
</TimeBasedFileNamingAndTriggeringPolicy>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<charset>UTF-8</charset>
|
||||||
|
<Pattern>%d %t %-5level %logger{36} %line - %msg%n</Pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
<appender name="runLogAppender" class="ch.qos.logback.classic.AsyncAppender">
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>INFO</level>
|
||||||
|
</filter>
|
||||||
|
<queueSize>10000</queueSize>
|
||||||
|
<appender-ref ref="apiRunLogAppender"/>
|
||||||
|
</appender>
|
||||||
|
<logger name="ms-jmeter-run-log" additivity="false">
|
||||||
|
<level value="${logger.level:INFO}"/>
|
||||||
|
<appender-ref ref="runLogAppender"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<!-- 自定义JMETER输出日志 -->
|
||||||
|
<appender name="JMETER_LOG" class="io.metersphere.api.jmeter.JMeterLoggerAppender"/>
|
||||||
|
|
||||||
|
<root level="INFO">
|
||||||
|
<appender-ref ref="infoAsyncAppender"/>
|
||||||
|
<appender-ref ref="console"/>
|
||||||
|
</root>
|
||||||
|
<!--将JMETER日志单独输出的包路径-->
|
||||||
|
<logger name="org.apache.jmeter" additivity="false" level="INFO">
|
||||||
|
<appender-ref ref="JMETER_LOG"/>
|
||||||
|
</logger>
|
||||||
|
<logger name="io.metersphere" additivity="false">
|
||||||
|
<level value="${logger.level:INFO}"/>
|
||||||
|
<appender-ref ref="infoAsyncAppender"/>
|
||||||
|
<appender-ref ref="warnAsyncAppender"/>
|
||||||
|
<appender-ref ref="errorAsyncAppender"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<logger name="io.metersphere.base.mapper" level="${logger.sql.level}">
|
||||||
|
<appender-ref ref="console"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
<logger name="io.metersphere.ApiApplication" additivity="false" level="${logger.level:INFO}">
|
||||||
|
<appender-ref ref="infoAsyncAppender"/>
|
||||||
|
</logger>
|
||||||
|
|
||||||
|
</configuration>
|
|
@ -2,7 +2,7 @@ package io.metersphere.plugin.api.dto;
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||||
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
import com.fasterxml.jackson.annotation.JsonTypeInfo;
|
||||||
import io.metersphere.plugin.util.LogUtil;
|
import io.metersphere.plugin.util.PluginLogUtils;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
import org.apache.jmeter.save.SaveService;
|
import org.apache.jmeter.save.SaveService;
|
||||||
|
@ -66,8 +66,7 @@ public abstract class TestElementDTO {
|
||||||
SaveService.saveTree(hashTree, bas);
|
SaveService.saveTree(hashTree, bas);
|
||||||
return bas.toString();
|
return bas.toString();
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
e.printStackTrace();
|
PluginLogUtils.error("HashTree error, can't log jmx scenarioDefinition");
|
||||||
LogUtil.warn("HashTree error, can't log jmx scenarioDefinition");
|
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,11 +3,7 @@ package io.metersphere.plugin.util;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.io.IOException;
|
public class PluginLogUtils {
|
||||||
import java.io.PrintWriter;
|
|
||||||
import java.io.StringWriter;
|
|
||||||
|
|
||||||
public class LogUtil {
|
|
||||||
public static final String DEBUG = "DEBUG";
|
public static final String DEBUG = "DEBUG";
|
||||||
public static final String INFO = "INFO";
|
public static final String INFO = "INFO";
|
||||||
public static final String WARN = "WARN";
|
public static final String WARN = "WARN";
|
||||||
|
@ -19,27 +15,27 @@ public class LogUtil {
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static Logger getLogger() {
|
public static Logger getLogger() {
|
||||||
return LoggerFactory.getLogger(LogUtil.getLogClass());
|
return LoggerFactory.getLogger(PluginLogUtils.getLogClass());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void writeLog(Object msg, String level) {
|
public static void writeLog(Object msg, String level) {
|
||||||
Logger logger = LogUtil.getLogger();
|
Logger logger = PluginLogUtils.getLogger();
|
||||||
|
|
||||||
if (DEBUG.equals(level)) {
|
if (DEBUG.equals(level)) {
|
||||||
if (logger != null && logger.isDebugEnabled()) {
|
if (logger != null && logger.isDebugEnabled()) {
|
||||||
logger.debug(LogUtil.getMsg(msg));
|
logger.debug(PluginLogUtils.getMsg(msg));
|
||||||
}
|
}
|
||||||
} else if (INFO.equals(level)) {
|
} else if (INFO.equals(level)) {
|
||||||
if (logger != null && logger.isInfoEnabled()) {
|
if (logger != null && logger.isInfoEnabled()) {
|
||||||
logger.info(LogUtil.getMsg(msg));
|
logger.info(PluginLogUtils.getMsg(msg));
|
||||||
}
|
}
|
||||||
} else if (WARN.equals(level)) {
|
} else if (WARN.equals(level)) {
|
||||||
if (logger != null && logger.isWarnEnabled()) {
|
if (logger != null && logger.isWarnEnabled()) {
|
||||||
logger.warn(LogUtil.getMsg(msg));
|
logger.warn(PluginLogUtils.getMsg(msg));
|
||||||
}
|
}
|
||||||
} else if (ERROR.equals(level)) {
|
} else if (ERROR.equals(level)) {
|
||||||
if (logger != null && logger.isErrorEnabled()) {
|
if (logger != null && logger.isErrorEnabled()) {
|
||||||
logger.error(LogUtil.getMsg(msg));
|
logger.error(PluginLogUtils.getMsg(msg));
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (logger != null && logger.isErrorEnabled()) {
|
if (logger != null && logger.isErrorEnabled()) {
|
||||||
|
@ -49,122 +45,122 @@ public class LogUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void info(Object msg) {
|
public static void info(Object msg) {
|
||||||
Logger logger = LogUtil.getLogger();
|
Logger logger = PluginLogUtils.getLogger();
|
||||||
if (logger != null && logger.isInfoEnabled()) {
|
if (logger != null && logger.isInfoEnabled()) {
|
||||||
logger.info(LogUtil.getMsg(msg));
|
logger.info(PluginLogUtils.getMsg(msg));
|
||||||
System.out.println(msg);
|
System.out.println(msg);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void info(Object msg, Object o1) {
|
public static void info(Object msg, Object o1) {
|
||||||
Logger logger = LogUtil.getLogger();
|
Logger logger = PluginLogUtils.getLogger();
|
||||||
if (logger != null && logger.isInfoEnabled()) {
|
if (logger != null && logger.isInfoEnabled()) {
|
||||||
logger.info(LogUtil.getMsg(msg), o1);
|
logger.info(PluginLogUtils.getMsg(msg), o1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void info(Object msg, Object o1, Object o2) {
|
public static void info(Object msg, Object o1, Object o2) {
|
||||||
Logger logger = LogUtil.getLogger();
|
Logger logger = PluginLogUtils.getLogger();
|
||||||
if (logger != null && logger.isInfoEnabled()) {
|
if (logger != null && logger.isInfoEnabled()) {
|
||||||
logger.info(LogUtil.getMsg(msg), o1, o2);
|
logger.info(PluginLogUtils.getMsg(msg), o1, o2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void info(Object msg, Object[] obj) {
|
public static void info(Object msg, Object[] obj) {
|
||||||
Logger logger = LogUtil.getLogger();
|
Logger logger = PluginLogUtils.getLogger();
|
||||||
if (logger != null && logger.isInfoEnabled()) {
|
if (logger != null && logger.isInfoEnabled()) {
|
||||||
logger.info(LogUtil.getMsg(msg), obj);
|
logger.info(PluginLogUtils.getMsg(msg), obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void debug(Object msg) {
|
public static void debug(Object msg) {
|
||||||
Logger logger = LogUtil.getLogger();
|
Logger logger = PluginLogUtils.getLogger();
|
||||||
if (logger != null && logger.isDebugEnabled()) {
|
if (logger != null && logger.isDebugEnabled()) {
|
||||||
logger.debug(LogUtil.getMsg(msg));
|
logger.debug(PluginLogUtils.getMsg(msg));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void debug(Object msg, Object o) {
|
public static void debug(Object msg, Object o) {
|
||||||
Logger logger = LogUtil.getLogger();
|
Logger logger = PluginLogUtils.getLogger();
|
||||||
if (logger != null && logger.isDebugEnabled()) {
|
if (logger != null && logger.isDebugEnabled()) {
|
||||||
logger.debug(LogUtil.getMsg(msg), o);
|
logger.debug(PluginLogUtils.getMsg(msg), o);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void debug(Object msg, Object o1, Object o2) {
|
public static void debug(Object msg, Object o1, Object o2) {
|
||||||
Logger logger = LogUtil.getLogger();
|
Logger logger = PluginLogUtils.getLogger();
|
||||||
if (logger != null && logger.isDebugEnabled()) {
|
if (logger != null && logger.isDebugEnabled()) {
|
||||||
logger.debug(LogUtil.getMsg(msg), o1, o2);
|
logger.debug(PluginLogUtils.getMsg(msg), o1, o2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void debug(Object msg, Object[] obj) {
|
public static void debug(Object msg, Object[] obj) {
|
||||||
Logger logger = LogUtil.getLogger();
|
Logger logger = PluginLogUtils.getLogger();
|
||||||
if (logger != null && logger.isDebugEnabled()) {
|
if (logger != null && logger.isDebugEnabled()) {
|
||||||
logger.debug(LogUtil.getMsg(msg), obj);
|
logger.debug(PluginLogUtils.getMsg(msg), obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void warn(Object msg) {
|
public static void warn(Object msg) {
|
||||||
Logger logger = LogUtil.getLogger();
|
Logger logger = PluginLogUtils.getLogger();
|
||||||
if (logger != null && logger.isWarnEnabled()) {
|
if (logger != null && logger.isWarnEnabled()) {
|
||||||
logger.warn(LogUtil.getMsg(msg));
|
logger.warn(PluginLogUtils.getMsg(msg));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void warn(Object msg, Object o) {
|
public static void warn(Object msg, Object o) {
|
||||||
Logger logger = LogUtil.getLogger();
|
Logger logger = PluginLogUtils.getLogger();
|
||||||
if (logger != null && logger.isWarnEnabled()) {
|
if (logger != null && logger.isWarnEnabled()) {
|
||||||
logger.warn(LogUtil.getMsg(msg), o);
|
logger.warn(PluginLogUtils.getMsg(msg), o);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void warn(Object msg, Object o1, Object o2) {
|
public static void warn(Object msg, Object o1, Object o2) {
|
||||||
Logger logger = LogUtil.getLogger();
|
Logger logger = PluginLogUtils.getLogger();
|
||||||
if (logger != null && logger.isWarnEnabled()) {
|
if (logger != null && logger.isWarnEnabled()) {
|
||||||
logger.warn(LogUtil.getMsg(msg), o1, o2);
|
logger.warn(PluginLogUtils.getMsg(msg), o1, o2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void warn(Object msg, Object[] obj) {
|
public static void warn(Object msg, Object[] obj) {
|
||||||
Logger logger = LogUtil.getLogger();
|
Logger logger = PluginLogUtils.getLogger();
|
||||||
if (logger != null && logger.isWarnEnabled()) {
|
if (logger != null && logger.isWarnEnabled()) {
|
||||||
logger.warn(LogUtil.getMsg(msg), obj);
|
logger.warn(PluginLogUtils.getMsg(msg), obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void error(Object msg) {
|
public static void error(Object msg) {
|
||||||
Logger logger = LogUtil.getLogger();
|
Logger logger = PluginLogUtils.getLogger();
|
||||||
if (logger != null && logger.isErrorEnabled()) {
|
if (logger != null && logger.isErrorEnabled()) {
|
||||||
logger.error(LogUtil.getMsg(msg));// 并追加方法名称
|
logger.error(PluginLogUtils.getMsg(msg));// 并追加方法名称
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void error(Object msg, Object o) {
|
public static void error(Object msg, Object o) {
|
||||||
Logger logger = LogUtil.getLogger();
|
Logger logger = PluginLogUtils.getLogger();
|
||||||
if (logger != null && logger.isErrorEnabled()) {
|
if (logger != null && logger.isErrorEnabled()) {
|
||||||
logger.error(LogUtil.getMsg(msg), o);
|
logger.error(PluginLogUtils.getMsg(msg), o);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void error(Object msg, Object o1, Object o2) {
|
public static void error(Object msg, Object o1, Object o2) {
|
||||||
Logger logger = LogUtil.getLogger();
|
Logger logger = PluginLogUtils.getLogger();
|
||||||
if (logger != null && logger.isErrorEnabled()) {
|
if (logger != null && logger.isErrorEnabled()) {
|
||||||
logger.error(LogUtil.getMsg(msg), o1, o2);
|
logger.error(PluginLogUtils.getMsg(msg), o1, o2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void error(Object msg, Object[] obj) {
|
public static void error(Object msg, Object[] obj) {
|
||||||
Logger logger = LogUtil.getLogger();
|
Logger logger = PluginLogUtils.getLogger();
|
||||||
if (logger != null && logger.isErrorEnabled()) {
|
if (logger != null && logger.isErrorEnabled()) {
|
||||||
logger.error(LogUtil.getMsg(msg), obj);
|
logger.error(PluginLogUtils.getMsg(msg), obj);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void error(Object msg, Throwable ex) {
|
public static void error(Object msg, Throwable ex) {
|
||||||
Logger logger = LogUtil.getLogger();
|
Logger logger = PluginLogUtils.getLogger();
|
||||||
if (logger != null && logger.isErrorEnabled()) {
|
if (logger != null && logger.isErrorEnabled()) {
|
||||||
logger.error(LogUtil.getMsg(msg), ex);
|
logger.error(PluginLogUtils.getMsg(msg), ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -172,9 +168,9 @@ public class LogUtil {
|
||||||
String str = "";
|
String str = "";
|
||||||
|
|
||||||
if (msg != null) {
|
if (msg != null) {
|
||||||
str = LogUtil.getLogMethod() + "[" + msg.toString() + "]";
|
str = PluginLogUtils.getLogMethod() + "[" + msg.toString() + "]";
|
||||||
} else {
|
} else {
|
||||||
str = LogUtil.getLogMethod() + "[null]";
|
str = PluginLogUtils.getLogMethod() + "[null]";
|
||||||
}
|
}
|
||||||
if (ex != null) {
|
if (ex != null) {
|
||||||
str += "[" + ex.getMessage() + "]";
|
str += "[" + ex.getMessage() + "]";
|
||||||
|
@ -184,7 +180,7 @@ public class LogUtil {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getMsg(Object msg) {
|
public static String getMsg(Object msg) {
|
||||||
return LogUtil.getMsg(msg, null);
|
return PluginLogUtils.getMsg(msg, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -220,40 +216,4 @@ public class LogUtil {
|
||||||
|
|
||||||
return str;
|
return str;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String toString(Throwable e) {
|
|
||||||
StringWriter sw = null;
|
|
||||||
PrintWriter pw = null;
|
|
||||||
try {
|
|
||||||
sw = new StringWriter();
|
|
||||||
pw = new PrintWriter(sw);
|
|
||||||
//将出错的栈信息输出到printWriter中
|
|
||||||
e.printStackTrace(pw);
|
|
||||||
pw.flush();
|
|
||||||
sw.flush();
|
|
||||||
} finally {
|
|
||||||
if (sw != null) {
|
|
||||||
try {
|
|
||||||
sw.close();
|
|
||||||
} catch (IOException e1) {
|
|
||||||
e1.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (pw != null) {
|
|
||||||
pw.close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return sw.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getExceptionDetailsToStr(Exception e) {
|
|
||||||
StringBuilder sb = new StringBuilder(e.toString());
|
|
||||||
StackTraceElement[] stackElements = e.getStackTrace();
|
|
||||||
for (StackTraceElement stackTraceElement : stackElements) {
|
|
||||||
sb.append(stackTraceElement.toString());
|
|
||||||
sb.append("\n");
|
|
||||||
}
|
|
||||||
sb.append("\n");
|
|
||||||
return sb.toString();
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -0,0 +1,145 @@
|
||||||
|
package io.metersphere.sdk.util;
|
||||||
|
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.util.Calendar;
|
||||||
|
import java.util.Date;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
|
||||||
|
public class DateUtils {
|
||||||
|
public static final String DATE_PATTERN = "yyyy-MM-dd";
|
||||||
|
public static final String TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";
|
||||||
|
|
||||||
|
|
||||||
|
public static Date getDate(String dateString) throws Exception {
|
||||||
|
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_PATTERN);
|
||||||
|
return dateFormat.parse(dateString);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Date getTime(String timeString) throws Exception {
|
||||||
|
SimpleDateFormat dateFormat = new SimpleDateFormat(TIME_PATTERN);
|
||||||
|
return dateFormat.parse(timeString);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getDateString(Date date) throws Exception {
|
||||||
|
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_PATTERN);
|
||||||
|
return dateFormat.format(date);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getDateString(long timeStamp) throws Exception {
|
||||||
|
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_PATTERN);
|
||||||
|
return dateFormat.format(timeStamp);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getTimeString(Date date) throws Exception {
|
||||||
|
SimpleDateFormat dateFormat = new SimpleDateFormat(TIME_PATTERN);
|
||||||
|
return dateFormat.format(date);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getTimeString(long timeStamp) {
|
||||||
|
SimpleDateFormat dateFormat = new SimpleDateFormat(TIME_PATTERN);
|
||||||
|
return dateFormat.format(timeStamp);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getTimeStr(long timeStamp) {
|
||||||
|
SimpleDateFormat dateFormat = new SimpleDateFormat(TIME_PATTERN);
|
||||||
|
return dateFormat.format(timeStamp);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getDataStr(long timeStamp) {
|
||||||
|
SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_PATTERN);
|
||||||
|
return dateFormat.format(timeStamp);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static Date dateSum(Date date, int countDays) {
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.setTime(date);
|
||||||
|
calendar.add(Calendar.DAY_OF_MONTH, countDays);
|
||||||
|
|
||||||
|
return calendar.getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Date dateSum(Date date, int countUnit, int calendarType) {
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.setTime(date);
|
||||||
|
calendar.add(calendarType, countUnit);
|
||||||
|
|
||||||
|
return calendar.getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取入参日期所在周的周一周末日期。 日期对应的时间为当日的零点
|
||||||
|
*
|
||||||
|
* @return Map<String, String>(2); key取值范围:firstTime/lastTime
|
||||||
|
*/
|
||||||
|
public static Map<String, Date> getWeedFirstTimeAndLastTime(Date date) throws Exception{
|
||||||
|
Map<String, Date> returnMap = new HashMap<>();
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.setFirstDayOfWeek(Calendar.MONDAY);
|
||||||
|
int dayWeek = calendar.get(Calendar.DAY_OF_WEEK);
|
||||||
|
if (dayWeek == 1) {
|
||||||
|
dayWeek = 8;
|
||||||
|
}
|
||||||
|
calendar.add(Calendar.DATE, calendar.getFirstDayOfWeek() - dayWeek);
|
||||||
|
//第一天的时分秒是 00:00:00 这里直接取日期,默认就是零点零分
|
||||||
|
Date thisWeekFirstTime = getDate(getDateString(calendar.getTime()));
|
||||||
|
|
||||||
|
//计算七天过后的日期
|
||||||
|
calendar.add(Calendar.DATE, 7);
|
||||||
|
Date nextWeekFirstDay = getDate(getDateString(calendar.getTime()));
|
||||||
|
Date thisWeekLastTime = getTime(getTimeString(nextWeekFirstDay.getTime() - 1));
|
||||||
|
|
||||||
|
returnMap.put("firstTime", thisWeekFirstTime);
|
||||||
|
returnMap.put("lastTime", thisWeekLastTime);
|
||||||
|
return returnMap;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当前时间或者当前时间+- 任意天数 时间的时间戳
|
||||||
|
*
|
||||||
|
* @param countDays
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static Long getTimestamp(int countDays) {
|
||||||
|
Date now = new Date();
|
||||||
|
return dateSum(now, countDays).getTime() / 1000 * 1000;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Long getTimestamp(String dateString) throws Exception {
|
||||||
|
return getDate(dateString).getTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取当天的起始时间Date
|
||||||
|
*
|
||||||
|
* @param time 指定日期 例: 2020-12-13 06:12:42
|
||||||
|
* @return 当天起始时间 例: 2020-12-13 00:00:00
|
||||||
|
* @throws Exception
|
||||||
|
*/
|
||||||
|
public static Date getDayStartTime(Date time) throws Exception {
|
||||||
|
return getDate(getDateString(time));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static long getDailyStartTime() {
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.setTimeInMillis(System.currentTimeMillis());
|
||||||
|
calendar.set(Calendar.HOUR_OF_DAY, 0);
|
||||||
|
calendar.set(Calendar.SECOND, 0);
|
||||||
|
calendar.set(Calendar.MINUTE, 0);
|
||||||
|
calendar.set(Calendar.MILLISECOND, 0);
|
||||||
|
return calendar.getTimeInMillis();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static long getDailyEndTime() {
|
||||||
|
Calendar calendar = Calendar.getInstance();
|
||||||
|
calendar.setTimeInMillis(System.currentTimeMillis());
|
||||||
|
calendar.set(Calendar.HOUR_OF_DAY, 23);
|
||||||
|
calendar.set(Calendar.MINUTE, 59);
|
||||||
|
calendar.set(Calendar.SECOND, 59);
|
||||||
|
calendar.set(Calendar.MILLISECOND, 999);
|
||||||
|
return calendar.getTimeInMillis();
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,167 @@
|
||||||
|
package io.metersphere.sdk.util;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
|
||||||
|
public class LogUtils {
|
||||||
|
//日志工具类
|
||||||
|
public static final String DEBUG = "DEBUG";
|
||||||
|
public static final String INFO = "INFO";
|
||||||
|
public static final String WARN = "WARN";
|
||||||
|
public static final String ERROR = "ERROR";
|
||||||
|
|
||||||
|
public static void writeLog(Object msg, String level, Logger logger) {
|
||||||
|
if (logger != null && logger.isInfoEnabled()) {
|
||||||
|
switch (level) {
|
||||||
|
case DEBUG -> logger.debug(LogUtils.getMsg(msg));
|
||||||
|
case INFO -> logger.info(LogUtils.getMsg(msg));
|
||||||
|
case WARN -> logger.warn(LogUtils.getMsg(msg));
|
||||||
|
case ERROR -> logger.error(LogUtils.getMsg(msg));
|
||||||
|
default -> logger.error(StringUtils.EMPTY);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Logger logger) {
|
||||||
|
if (logger != null && logger.isInfoEnabled()) {
|
||||||
|
logger.info(LogUtils.getMsg(msg));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object o1, Logger logger) {
|
||||||
|
if (logger != null && logger.isInfoEnabled()) {
|
||||||
|
logger.info(LogUtils.getMsg(msg), o1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object o1, Object o2, Logger logger) {
|
||||||
|
if (logger != null && logger.isInfoEnabled()) {
|
||||||
|
logger.info(LogUtils.getMsg(msg), o1, o2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object[] obj, Logger logger) {
|
||||||
|
if (logger != null && logger.isInfoEnabled()) {
|
||||||
|
logger.info(LogUtils.getMsg(msg), obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Logger logger) {
|
||||||
|
if (logger != null && logger.isDebugEnabled()) {
|
||||||
|
logger.debug(LogUtils.getMsg(msg));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object o, Logger logger) {
|
||||||
|
if (logger != null && logger.isDebugEnabled()) {
|
||||||
|
logger.debug(LogUtils.getMsg(msg), o);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object o1, Object o2, Logger logger) {
|
||||||
|
if (logger != null && logger.isDebugEnabled()) {
|
||||||
|
logger.debug(LogUtils.getMsg(msg), o1, o2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object[] obj, Logger logger) {
|
||||||
|
if (logger != null && logger.isDebugEnabled()) {
|
||||||
|
logger.debug(LogUtils.getMsg(msg), obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Logger logger) {
|
||||||
|
if (logger != null && logger.isWarnEnabled()) {
|
||||||
|
logger.warn(LogUtils.getMsg(msg));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object o, Logger logger) {
|
||||||
|
if (logger != null && logger.isWarnEnabled()) {
|
||||||
|
logger.warn(LogUtils.getMsg(msg), o);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object o1, Object o2, Logger logger) {
|
||||||
|
if (logger != null && logger.isWarnEnabled()) {
|
||||||
|
logger.warn(LogUtils.getMsg(msg), o1, o2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object[] obj, Logger logger) {
|
||||||
|
if (logger != null && logger.isWarnEnabled()) {
|
||||||
|
logger.warn(LogUtils.getMsg(msg), obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Logger logger) {
|
||||||
|
if (logger != null && logger.isErrorEnabled()) {
|
||||||
|
logger.error(LogUtils.getMsg(msg));// 并追加方法名称
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Throwable e, Logger logger) {
|
||||||
|
if (logger != null && logger.isErrorEnabled()) {
|
||||||
|
logger.error(LogUtils.getMsg(e), e);// 同时打印错误堆栈信息
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object o, Logger logger) {
|
||||||
|
if (logger != null && logger.isErrorEnabled()) {
|
||||||
|
logger.error(LogUtils.getMsg(msg), o);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object o1, Object o2, Logger logger) {
|
||||||
|
if (logger != null && logger.isErrorEnabled()) {
|
||||||
|
logger.error(LogUtils.getMsg(msg), o1, o2);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object[] obj, Logger logger) {
|
||||||
|
if (logger != null && logger.isErrorEnabled()) {
|
||||||
|
logger.error(LogUtils.getMsg(msg), obj);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Throwable ex, Logger logger) {
|
||||||
|
if (logger != null && logger.isErrorEnabled()) {
|
||||||
|
logger.error(LogUtils.getMsg(msg), ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getMsg(Object msg, Throwable ex) {
|
||||||
|
String str = "";
|
||||||
|
|
||||||
|
if (msg != null) {
|
||||||
|
str = LogUtils.getLogMethod() + "[" + msg + "]";
|
||||||
|
} else {
|
||||||
|
str = LogUtils.getLogMethod() + "[null]";
|
||||||
|
}
|
||||||
|
if (ex != null) {
|
||||||
|
str += "[" + ex.getMessage() + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getMsg(Object msg) {
|
||||||
|
return LogUtils.getMsg(msg, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 得到调用方法名称
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private static String getLogMethod() {
|
||||||
|
String str = "";
|
||||||
|
StackTraceElement[] stack = (new Throwable()).getStackTrace();
|
||||||
|
if (stack.length > 4) {
|
||||||
|
StackTraceElement ste = stack[4];
|
||||||
|
str = "Method[" + ste.getMethodName() + "]";// 方法名称
|
||||||
|
}
|
||||||
|
return str;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,44 @@
|
||||||
|
package io.metersphere.api.jmeter;
|
||||||
|
|
||||||
|
import ch.qos.logback.classic.spi.ILoggingEvent;
|
||||||
|
import ch.qos.logback.classic.spi.StackTraceElementProxy;
|
||||||
|
import ch.qos.logback.core.UnsynchronizedAppenderBase;
|
||||||
|
import io.metersphere.api.utils.ApiLogUtils;
|
||||||
|
import io.metersphere.api.utils.FixedCapacityUtils;
|
||||||
|
import io.metersphere.sdk.util.DateUtils;
|
||||||
|
import io.metersphere.sdk.util.LogUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
public class JMeterLoggerAppender extends UnsynchronizedAppenderBase<ILoggingEvent> {
|
||||||
|
private final static String THREAD_SPLIT = " ";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void append(ILoggingEvent event) {
|
||||||
|
try {
|
||||||
|
if (!event.getLevel().levelStr.equals(LogUtils.DEBUG) && StringUtils.isNotEmpty(event.getThreadName())) {
|
||||||
|
StringBuffer message = new StringBuffer();
|
||||||
|
String threadName = StringUtils.substringBeforeLast(event.getThreadName(), THREAD_SPLIT);
|
||||||
|
message.append(DateUtils.getTimeStr(event.getTimeStamp())).append(StringUtils.SPACE)
|
||||||
|
.append(event.getLevel()).append(StringUtils.SPACE)
|
||||||
|
.append(event.getThreadName()).append(StringUtils.SPACE)
|
||||||
|
.append(event.getFormattedMessage()).append(StringUtils.LF);
|
||||||
|
|
||||||
|
if (event.getThrowableProxy() != null) {
|
||||||
|
message.append(event.getThrowableProxy().getMessage()).append(StringUtils.LF);
|
||||||
|
message.append(event.getThrowableProxy().getClassName()).append(StringUtils.LF);
|
||||||
|
if (event.getThrowableProxy().getStackTraceElementProxyArray() != null) {
|
||||||
|
for (StackTraceElementProxy stackTraceElementProxy : event.getThrowableProxy().getStackTraceElementProxyArray()) {
|
||||||
|
message.append(" ").append(stackTraceElementProxy.getSTEAsString()).append(StringUtils.LF);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (message != null && !message.toString().contains("java.net.UnknownHostException")
|
||||||
|
&& FixedCapacityUtils.containsKey(threadName)) {
|
||||||
|
FixedCapacityUtils.get(threadName).append(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (Exception e) {
|
||||||
|
ApiLogUtils.error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,93 @@
|
||||||
|
package io.metersphere.api.utils;
|
||||||
|
|
||||||
|
import io.metersphere.sdk.util.LogUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class ApiLogUtils extends LogUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化日志
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static Logger getLogger() {
|
||||||
|
return LoggerFactory.getLogger("api-test");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void writeLog(Object msg, String level) {
|
||||||
|
writeLog(msg, level, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg) {
|
||||||
|
info(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object o1) {
|
||||||
|
info(msg, o1, getLogger().atError());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object o1, Object o2) {
|
||||||
|
info(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object[] obj) {
|
||||||
|
info(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg) {
|
||||||
|
debug(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object o) {
|
||||||
|
debug(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object o1, Object o2) {
|
||||||
|
debug(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object[] obj) {
|
||||||
|
debug(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg) {
|
||||||
|
warn(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object o) {
|
||||||
|
warn(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object o1, Object o2) {
|
||||||
|
warn(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object[] obj) {
|
||||||
|
warn(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg) {
|
||||||
|
error(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Throwable e) {
|
||||||
|
error(e, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object o) {
|
||||||
|
error(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object o1, Object o2) {
|
||||||
|
error(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object[] obj) {
|
||||||
|
error(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Throwable ex) {
|
||||||
|
error(msg, ex, getLogger());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
package io.metersphere.api.utils;
|
||||||
|
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.LinkedHashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class FixedCapacityUtils {
|
||||||
|
private static Map<String, StringBuffer> fixedCapacityCache = Collections.synchronizedMap(new LRUHashMap<>());
|
||||||
|
|
||||||
|
public static StringBuffer get(String key) {
|
||||||
|
return fixedCapacityCache.get(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean containsKey(String key) {
|
||||||
|
if (StringUtils.isEmpty(key)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return fixedCapacityCache.containsKey(key);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void put(String key, StringBuffer value) {
|
||||||
|
if (!fixedCapacityCache.containsKey(key)) {
|
||||||
|
fixedCapacityCache.put(key, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void remove(String key) {
|
||||||
|
if (fixedCapacityCache.containsKey(key)) {
|
||||||
|
fixedCapacityCache.remove(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static int size() {
|
||||||
|
return fixedCapacityCache.size();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static class LRUHashMap<K, V> extends LinkedHashMap<K, V> {
|
||||||
|
private int capacity = 3000;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
|
||||||
|
return size() > capacity;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,93 @@
|
||||||
|
package io.metersphere.load.util;
|
||||||
|
|
||||||
|
import io.metersphere.sdk.util.LogUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class LoadLogUtils extends LogUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化日志
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static Logger getLogger() {
|
||||||
|
return LoggerFactory.getLogger("load-test");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void writeLog(Object msg, String level) {
|
||||||
|
writeLog(msg, level, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg) {
|
||||||
|
info(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object o1) {
|
||||||
|
info(msg, o1, getLogger().atError());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object o1, Object o2) {
|
||||||
|
info(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object[] obj) {
|
||||||
|
info(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg) {
|
||||||
|
debug(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object o) {
|
||||||
|
debug(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object o1, Object o2) {
|
||||||
|
debug(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object[] obj) {
|
||||||
|
debug(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg) {
|
||||||
|
warn(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object o) {
|
||||||
|
warn(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object o1, Object o2) {
|
||||||
|
warn(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object[] obj) {
|
||||||
|
warn(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg) {
|
||||||
|
error(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Throwable e) {
|
||||||
|
error(e, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object o) {
|
||||||
|
error(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object o1, Object o2) {
|
||||||
|
error(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object[] obj) {
|
||||||
|
error(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Throwable ex) {
|
||||||
|
error(msg, ex, getLogger());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,87 @@
|
||||||
|
package io.metersphere.project.util;
|
||||||
|
|
||||||
|
import io.metersphere.sdk.util.LogUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class ProjectLogUtils extends LogUtils {
|
||||||
|
public static Logger getLogger() {
|
||||||
|
return LoggerFactory.getLogger("project-management");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void writeLog(Object msg, String level) {
|
||||||
|
writeLog(msg, level, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg) {
|
||||||
|
info(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object o1) {
|
||||||
|
info(msg, o1, getLogger().atError());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object o1, Object o2) {
|
||||||
|
info(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object[] obj) {
|
||||||
|
info(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg) {
|
||||||
|
debug(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object o) {
|
||||||
|
debug(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object o1, Object o2) {
|
||||||
|
debug(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object[] obj) {
|
||||||
|
debug(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg) {
|
||||||
|
warn(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object o) {
|
||||||
|
warn(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object o1, Object o2) {
|
||||||
|
warn(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object[] obj) {
|
||||||
|
warn(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg) {
|
||||||
|
error(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Throwable e) {
|
||||||
|
error(e, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object o) {
|
||||||
|
error(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object o1, Object o2) {
|
||||||
|
error(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object[] obj) {
|
||||||
|
error(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Throwable ex) {
|
||||||
|
error(msg, ex, getLogger());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,93 @@
|
||||||
|
package io.metersphere.system.util;
|
||||||
|
|
||||||
|
import io.metersphere.sdk.util.LogUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class SystemLogUtils extends LogUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化日志
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static Logger getLogger() {
|
||||||
|
return LoggerFactory.getLogger("system-setting");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void writeLog(Object msg, String level) {
|
||||||
|
writeLog(msg, level, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg) {
|
||||||
|
info(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object o1) {
|
||||||
|
info(msg, o1, getLogger().atError());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object o1, Object o2) {
|
||||||
|
info(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object[] obj) {
|
||||||
|
info(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg) {
|
||||||
|
debug(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object o) {
|
||||||
|
debug(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object o1, Object o2) {
|
||||||
|
debug(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object[] obj) {
|
||||||
|
debug(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg) {
|
||||||
|
warn(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object o) {
|
||||||
|
warn(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object o1, Object o2) {
|
||||||
|
warn(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object[] obj) {
|
||||||
|
warn(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg) {
|
||||||
|
error(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Throwable e) {
|
||||||
|
error(e, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object o) {
|
||||||
|
error(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object o1, Object o2) {
|
||||||
|
error(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object[] obj) {
|
||||||
|
error(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Throwable ex) {
|
||||||
|
error(msg, ex, getLogger());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,93 @@
|
||||||
|
package io.metersphere.plan.util;
|
||||||
|
|
||||||
|
import io.metersphere.sdk.util.LogUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class PlanLogUtils extends LogUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化日志
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static Logger getLogger() {
|
||||||
|
return LoggerFactory.getLogger("test-plan");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void writeLog(Object msg, String level) {
|
||||||
|
writeLog(msg, level, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg) {
|
||||||
|
info(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object o1) {
|
||||||
|
info(msg, o1, getLogger().atError());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object o1, Object o2) {
|
||||||
|
info(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object[] obj) {
|
||||||
|
info(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg) {
|
||||||
|
debug(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object o) {
|
||||||
|
debug(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object o1, Object o2) {
|
||||||
|
debug(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object[] obj) {
|
||||||
|
debug(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg) {
|
||||||
|
warn(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object o) {
|
||||||
|
warn(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object o1, Object o2) {
|
||||||
|
warn(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object[] obj) {
|
||||||
|
warn(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg) {
|
||||||
|
error(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Throwable e) {
|
||||||
|
error(e, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object o) {
|
||||||
|
error(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object o1, Object o2) {
|
||||||
|
error(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object[] obj) {
|
||||||
|
error(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Throwable ex) {
|
||||||
|
error(msg, ex, getLogger());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,93 @@
|
||||||
|
package io.metersphere.track.util;
|
||||||
|
|
||||||
|
import io.metersphere.sdk.util.LogUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class TrackLogUtils extends LogUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化日志
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static Logger getLogger() {
|
||||||
|
return LoggerFactory.getLogger("test-track");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void writeLog(Object msg, String level) {
|
||||||
|
writeLog(msg, level, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg) {
|
||||||
|
info(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object o1) {
|
||||||
|
info(msg, o1, getLogger().atError());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object o1, Object o2) {
|
||||||
|
info(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object[] obj) {
|
||||||
|
info(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg) {
|
||||||
|
debug(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object o) {
|
||||||
|
debug(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object o1, Object o2) {
|
||||||
|
debug(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object[] obj) {
|
||||||
|
debug(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg) {
|
||||||
|
warn(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object o) {
|
||||||
|
warn(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object o1, Object o2) {
|
||||||
|
warn(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object[] obj) {
|
||||||
|
warn(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg) {
|
||||||
|
error(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Throwable e) {
|
||||||
|
error(e, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object o) {
|
||||||
|
error(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object o1, Object o2) {
|
||||||
|
error(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object[] obj) {
|
||||||
|
error(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Throwable ex) {
|
||||||
|
error(msg, ex, getLogger());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,93 @@
|
||||||
|
package io.metersphere.ui.util;
|
||||||
|
|
||||||
|
import io.metersphere.sdk.util.LogUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class UiLogUtils extends LogUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化日志
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static Logger getLogger() {
|
||||||
|
return LoggerFactory.getLogger("ui-test");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void writeLog(Object msg, String level) {
|
||||||
|
writeLog(msg, level, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg) {
|
||||||
|
info(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object o1) {
|
||||||
|
info(msg, o1, getLogger().atError());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object o1, Object o2) {
|
||||||
|
info(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object[] obj) {
|
||||||
|
info(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg) {
|
||||||
|
debug(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object o) {
|
||||||
|
debug(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object o1, Object o2) {
|
||||||
|
debug(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object[] obj) {
|
||||||
|
debug(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg) {
|
||||||
|
warn(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object o) {
|
||||||
|
warn(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object o1, Object o2) {
|
||||||
|
warn(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object[] obj) {
|
||||||
|
warn(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg) {
|
||||||
|
error(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Throwable e) {
|
||||||
|
error(e, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object o) {
|
||||||
|
error(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object o1, Object o2) {
|
||||||
|
error(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object[] obj) {
|
||||||
|
error(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Throwable ex) {
|
||||||
|
error(msg, ex, getLogger());
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,93 @@
|
||||||
|
package io.metersphere.workstation.utils;
|
||||||
|
|
||||||
|
import io.metersphere.sdk.util.LogUtils;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
public class WorkstationLogUtils extends LogUtils {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始化日志
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static Logger getLogger() {
|
||||||
|
return LoggerFactory.getLogger("workstation");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void writeLog(Object msg, String level) {
|
||||||
|
writeLog(msg, level, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg) {
|
||||||
|
info(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object o1) {
|
||||||
|
info(msg, o1, getLogger().atError());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object o1, Object o2) {
|
||||||
|
info(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void info(Object msg, Object[] obj) {
|
||||||
|
info(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg) {
|
||||||
|
debug(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object o) {
|
||||||
|
debug(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object o1, Object o2) {
|
||||||
|
debug(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void debug(Object msg, Object[] obj) {
|
||||||
|
debug(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg) {
|
||||||
|
warn(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object o) {
|
||||||
|
warn(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object o1, Object o2) {
|
||||||
|
warn(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void warn(Object msg, Object[] obj) {
|
||||||
|
warn(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg) {
|
||||||
|
error(msg, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Throwable e) {
|
||||||
|
error(e, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object o) {
|
||||||
|
error(msg, o, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object o1, Object o2) {
|
||||||
|
error(msg, o1, o2, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Object[] obj) {
|
||||||
|
error(msg, obj, getLogger());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void error(Object msg, Throwable ex) {
|
||||||
|
error(msg, ex, getLogger());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue