logback寫日誌到mysql資料庫

2021-09-23 14:09:07 字數 2933 閱讀 4541

把專案的日誌輸出乙份到mysql資料庫(也輸出日誌檔案和控制台,本文只說輸出到資料庫)

我用的dbcp連線池,貌似不支援druid

commons-dbcp

commons-dbcp

1.4

com.mysql.jdbc.driver

jdbc:mysql://$:3306/user-center?characterencoding=utf-8$$

要讓logback輸出到資料庫,總得給他個地方存吧(表,固定的,無法靈活配置(蛋疼),看sql吧)

begin;

drop table if exists logging_event_property;

drop table if exists logging_event_exception;

drop table if exists logging_event;

commit;

/*這下邊三張表是logback匯入日誌所需的表(不能改變)*/

begin;

create table logging_event

( timestmp bigint not null,

formatted_message text not null,

logger_name varchar(254) not null,

level_string varchar(254) not null,

thread_name varchar(254),

reference_flag smallint,

arg0 varchar(254),

arg1 varchar(254),

arg2 varchar(254),

arg3 varchar(254),

caller_filename varchar(254) not null,

caller_class varchar(254) not null,

caller_method varchar(254) not null,

caller_line char(4) not null,

event_id bigint not null auto_increment primary key

);commit;

begin;

create table logging_event_property

( event_id bigint not null,

foreign key (event_id) references logging_event(event_id)

);commit;

begin;

create table logging_event_exception

( event_id bigint not null,

i smallint not null,

trace_line varchar(254) not null,

primary key(event_id, i),

foreign key (event_id) references logging_event(event_id)

);commit;

這三張表裡邊基本包含了我們所需要的所有日誌資訊,但是我需要的不在一張表中(有點煩),怎麼辦?這裡提供兩種思路,1:連線表查詢;2:弄個檢視(相當於一張表);我採用了第二種。上檢視sql

drop view if exists `error_log`;

create algorithm = undefined sql security definer view `error_log` as select

date_format( from_unixtime( round( ( `logging_event`.`timestmp` / 1000 ), 0 ) ), '%y-%m-%d %h:%i:%s' ) as `time`,

`logging_event`.`formatted_message` as `message`,

`logging_event`.`level_string` as `level`,

`logging_event`.`thread_name` as `thread_name`,

`logging_event`.`caller_class` as `class_name`,

`logging_event`.`caller_method` as `method`,

`logging_event`.`event_id` as `id`

from

( `logging_event` join `logging_event_property` on ( ( `logging_event_property`.`event_id` = `logging_event`.`event_id` ) ) )

where

根據自己需求定義哈(我的餓貼出來給你們參考),另外需要注意的地方是:logging_event這個表的timestamp欄位,它存的是毫秒值(坑啊),mysql預設秒,這樣一來需要把timstamp/1000然後再取整才能格式化成日期(找了好久沒找到資料,沒人遇到嗎)

專案中連線池本來用的是druid,於是我在datasource那裡用的也是druid,但是問題來了,專案啟動不起來卡住了,也沒有報什麼錯(沒錯,我怎麼搞。。。。),無奈只能換個連線池試試,就dbcp吧,於是就如上面**的配置,一試還真行,看來是不支援druid的問題。

以上只是我的個人見解,錯誤的地方歡迎指正。

logback 配置列印 JPA SQL日誌到檔案

logback 輸出 jpa sql日誌 到檔案 使用spring boot 配置 jpa 時可以指定如下配置在控制台檢視執行的sql語句 spring.jpa.show sql true spring boot 預設的日誌配置不會輸出到檔案,若要列印日誌到檔案,可以使用如下配置 llogging....

logback日誌詳解

logback日誌配置 一 日誌級別已經輸出規則 日誌級別從高到低 off fatal error warn info debug trace all 日誌輸出規則 根據當前root 級別,日誌輸出時,級別高於root預設的級別時會輸出。二 根節點包含的屬性 scan 當此屬性設定為true時,配置...

Logback日誌配置

logback越來越流行,不過使用過程中覺得還不錯,配置簡單明瞭。不過有幾點需要注意的是 spring boot中使用logback不需要再引入logback的三個jar包,因為在spring boot starter logging已經整合了它。幾種日誌過濾器,需要了解明白,不然不能配置到自己想要...