我们正在使用 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"])