0

我们正在使用 TLS syslog appender 从我们的 Grails 4 应用程序登录到 Papertrail。但是,Papertrail 日志中没有显示一些堆栈跟踪。

例如,以下两个日志表示来自完全相同的服务器的完全相同的事件。

控制台中的本地日志:

在此处输入图像描述

Papertrail 日志

在此处输入图像描述

logback.groovy

import ch.qos.logback.classic.PatternLayout
import com.papertrailapp.logback.Syslog4jAppender
import grails.util.BuildSettings
import grails.util.Environment
import org.productivity.java.syslog4j.impl.net.tcp.ssl.SSLTCPNetSyslogConfig
import org.springframework.boot.logging.logback.ColorConverter
import org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter

import java.nio.charset.StandardCharsets

conversionRule 'clr', ColorConverter
conversionRule 'wex', WhitespaceThrowableProxyConverter

// See http://logback.qos.ch/manual/groovy.html for details on configuration
appender('STDOUT', ConsoleAppender) {
    encoder(PatternLayoutEncoder) {
        charset = StandardCharsets.UTF_8

        pattern =
            '%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} ' + // Date
                '%clr(%5p) ' + // Log level
                '%clr(---){faint} %clr([%15.15t]){faint} ' + // Thread
                '%clr(%-40.40logger{39}){cyan} %clr(:){faint} ' + // Logger
                '%m%n%wex' // Message
    }
}

String loggingHost = System.getProperty("logging.host") ?: System.getenv("logging.host") ?: "logsN.papertrailapp.com"
int loggingPort = (System.getProperty("logging.port") as Integer) ?: (System.getenv("logging.port") as Integer) ?: 12345
String loggingIdentity = System.getProperty("logging.identity") ?: System.getenv("logging.identity") ?: "API21"

appender("SYSLOG-TLS", Syslog4jAppender) {
    layout(PatternLayout) {
        pattern = "%-5level %logger{35}: %m%n%xEx"
    }
    syslogConfig(SSLTCPNetSyslogConfig) {
        host = loggingHost
        port = loggingPort
        ident = loggingIdentity
        maxMessageLength = 128000
    }
}

def targetDir = BuildSettings.TARGET_DIR
if (Environment.isDevelopmentMode() && targetDir != null) {
    appender("FULL_STACKTRACE", FileAppender) {
        file = "${targetDir}/stacktrace.log"
        append = true
        encoder(PatternLayoutEncoder) {
            charset = StandardCharsets.UTF_8
            pattern = "%level %logger - %msg%n"
        }
    }
    logger("StackTrace", ERROR, ['FULL_STACKTRACE'], false)
}
root(ERROR, ["STDOUT", "SYSLOG-TLS"])
4

0 回答 0