把專案的日誌輸出乙份到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已經整合了它。幾種日誌過濾器,需要了解明白,不然不能配置到自己想要...