首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Logback dbAppender 自定义 SQL

好的,我来帮您回答这个问题。

Logback dbAppender 是一种用于将日志信息存储到数据库中的日志记录器组件。它可以将日志信息存储到任何支持 SQL 语句的数据库中,并且可以自定义 SQL 语句来实现不同的日志记录需求。

在使用 Logback dbAppender 时,需要在 logback.xml 配置文件中定义一个 dbAppender,并指定相应的数据库连接信息和 SQL 语句。例如:

代码语言:xml
复制

<appender name="DB" class="ch.qos.logback.classic.db.DBAppender">

<connectionSource class="ch.qos.logback.core.db.DataSourceConnectionSource">

代码语言:txt
复制
    <dataSource class="com.mysql.jdbc.jdbc2.optional.MysqlDataSource">
代码语言:txt
复制
        <url>jdbc:mysql://localhost:3306/mydb</url>
代码语言:txt
复制
        <user>root</user>
代码语言:txt
复制
       <password>password</password>
代码语言:txt
复制
       <driverClassName>com.mysql.jdbc.Driver</driverClassName>
代码语言:txt
复制
    </dataSource>
代码语言:txt
复制
</connectionSource>
代码语言:txt
复制
<sqlDialect class="ch.qos.logback.core.db.dialect.MySQLDialect" />

<insertHeaders>true</insertHeaders>

<insertLoggerName>true</insertLoggerName>

<insertThreadName>true</insertThreadName>

<insertTimestamp>true</insertTimestamp>

<insertContext>true</insertContext>

<insertCallerData>true</insertCallerData>

<insertMdc>true</insertMdc>

<insertNdc>true</insertNdc>

<insertFormattedMessage>true</insertFormattedMessage>

<insertLevel>true</insertLevel>

<insertThrowable>true</insertThrowable>

<insertThrowableMessage>true</insertThrowableMessage>

<insertThrowableStackTrace>true</insertThrowableStackTrace>

<insertThrowableRootCauseMessage>true</insertThrowableRootCauseMessage>

<insertThrowableRootCauseStackTrace>true</insertThrowableRootCauseStackTrace>

<insertEventId>true</insertEventId>

<insertEventMarker>true</insertEventMarker>

<insertException>true</insertException>

<insertExceptionMessage>true</insertExceptionMessage>

<insertExceptionStackTrace>true</insertExceptionStackTrace>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTraceElement>

<insertExceptionRootCauseClass>true</insertExceptionRootCauseClass>

<insertExceptionRootCauseMessage>true</insertExceptionRootCauseMessage>

<insertExceptionRootCauseStackTrace>true</insertExceptionRootCauseStackTrace>

<insertExceptionRootCauseFirstStackTraceElement>true</insertExceptionRootCauseFirstStackTrace

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

从SSRF 到 RCE —— 对 Spring Cloud Gateway RCE漏洞的分析

但幸运的是 ,在 logback 中同样存在类似于 JDBCAppender 的 Appender —— DBAppender DBAppender 中有一个名为ConnectionSource的接口...,该接口提供了一种可插拔式的方式为需要使用 java.sql.Connection 的 logback 类获取 JDBC 连接,目前有三种实现,分别为: DriverManagerConnectionSource...首先在 resource 目录下新建 logback-spring.xml ,内容如下 <appender name="DB" class="ch.qos.<em>logback</em>.classic.db.<em>DBAppender</em>...自带的方法,从名字就可以看出来,它通过 JNDI 获取 javax.<em>sql</em>.DataSource,然后再获取 java.<em>sql</em>.Connection 实例 同样的,对于我们来说,这种方式实现 RCE...name="DB" class="ch.qos.<em>logback</em>.classic.db.<em>DBAppender</em>"> <connectionSource class="ch.qos.<em>logback</em>.core.db.JNDIConnectionSource

80640

log4j 1.x 与 logback 的鸡肋RCE讨论

但幸运的是 ,在 logback 中同样存在类似于 JDBCAppender 的 Appender —— DBAppender DBAppender 中有一个名为ConnectionSource的接口...,该接口提供了一种可插拔式的方式为需要使用 java.sql.Connection 的 logback 类获取 JDBC 连接,目前有三种实现,分别为: DriverManagerConnectionSource...首先在 resource 目录下新建 logback-spring.xml ,内容如下 <appender name="DB" class="ch.qos.<em>logback</em>.classic.db.<em>DBAppender</em>...自带的方法,从名字就可以看出来,它通过 JNDI 获取 javax.<em>sql</em>.DataSource,然后再获取 java.<em>sql</em>.Connection 实例 同样的,对于我们来说,这种方式实现 RCE...name="DB" class="ch.qos.<em>logback</em>.classic.db.<em>DBAppender</em>"> <connectionSource class="ch.qos.<em>logback</em>.core.db.JNDIConnectionSource

22320

springboot中使用logback

ConsoleAppender和FixedWindowRollingPolicy都是logback提供的两个Appender处理类,Appender类代表了对日志的处理方法,这个可以自定义。...使用自定义配置 以上使用yml的配置功能比较少,要完成一些复杂配置,譬如在开发环境下和在生产环境下使用不同的level,使用自定义的Appender,那么就需要自定义配置。...按时间自动滚动的日志文件 这个就需要自定义一个appender的配置文件了 <appender name="MY_FILE" class="ch.qos.<em>logback</em>.core.rolling.RollingFileAppender...Appender也有很多种,系统已经完成的有Console,File,SocketAppender,SMTPAppender,<em>DBAppender</em>等,可以往远处服务器、数据库、文件、邮件、控制台等输出日志...<em>自定义</em>Appender 如果以上都不能满足要求,需要<em>自定义</em>Appender,譬如我们希望把日志除了往文件、控制台外,再往mongoDB输出一份,那么就需要<em>自定义</em>一个mongoAppender。

44920

SQL自定义排序

WHEN City='上海' THEN 3 WHEN City='重庆' THEN 4 WHEN City='广州' THEN 5 END 此方法针对比较简单的查询容易实现自定义排序...Citys WHERE City='重庆' UNION ALL SELECT 5 Num,* FROM Citys WHERE City='广州' ) a ORDER BY a.Num 我们通过增加一列自定义的...Num,给查询出来的每一行记录赋一个值,这个值是我们输出的顺序,再通过子查询对这个自定义的Num进行排序即可。...时常用在比较复杂的查询语句中,且需要自定义排序的场景下。 方法三 创建临时表 相比上面两种方法,创建临时表的方法可以极大的减少代码量。...我们可以先创建一个按照我们希望输出的顺序的临时表Temp,具体如下: 当我们需要自定义排序输出时,可以直接关联该临时表,具体代码如下: SELECT a.* FROM Citys a JOIN Temp

7710
领券