日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
Python實(shí)現(xiàn)日志寫(xiě)進(jìn)數(shù)據(jù)庫(kù)的示例(Demo) (日志寫(xiě)進(jìn)數(shù)據(jù)庫(kù)demo)

Python作為一門(mén)跨平臺(tái)高級(jí)編程語(yǔ)言,因其簡(jiǎn)潔易學(xué)和強(qiáng)大的功能在越來(lái)越多的場(chǎng)景中被廣泛使用。其中,運(yùn)維是Python的一大應(yīng)用領(lǐng)域,Python可以用來(lái)編寫(xiě)監(jiān)控系統(tǒng)、自動(dòng)化運(yùn)維工具、系統(tǒng)管理等。日志記錄是運(yùn)維工作中必不可少的一部分,合理的日志記錄可以幫助系統(tǒng)管理員快速排查故障、監(jiān)控系統(tǒng)運(yùn)行狀態(tài)。本文將介紹如何用。

成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站服務(wù)團(tuán)隊(duì)是一支充滿(mǎn)著熱情的團(tuán)隊(duì),執(zhí)著、敏銳、追求更好,是創(chuàng)新互聯(lián)的標(biāo)準(zhǔn)與要求,同時(shí)竭誠(chéng)為客戶(hù)提供服務(wù)是我們的理念。創(chuàng)新互聯(lián)公司把每個(gè)網(wǎng)站當(dāng)做一個(gè)產(chǎn)品來(lái)開(kāi)發(fā),精雕細(xì)琢,追求一名工匠心中的細(xì)致,我們更用心!

一、為什么要將日志寫(xiě)進(jìn)數(shù)據(jù)庫(kù)

在Web開(kāi)發(fā)、系統(tǒng)管理等領(lǐng)域中,通常會(huì)產(chǎn)生大量的日志信息,包括業(yè)務(wù)邏輯日志、系統(tǒng)運(yùn)行日志、錯(cuò)誤日志等。這些日志信息對(duì)于系統(tǒng)管理員來(lái)說(shuō)非常重要,它們可以幫助管理員快速發(fā)現(xiàn)和解決問(wèn)題,提高系統(tǒng)的運(yùn)行效率和穩(wěn)定性。但是,日志記錄會(huì)占用大量的磁盤(pán)空間,需要定期清理和歸檔。如果將日志寫(xiě)進(jìn)數(shù)據(jù)庫(kù),不僅可以快速查詢(xún)和統(tǒng)計(jì)日志信息,還可以避免因?yàn)橛脖P(pán)容量不足而導(dǎo)致日志記錄被截?cái)嗟那闆r發(fā)生。

二、Python實(shí)現(xiàn)日志寫(xiě)進(jìn)數(shù)據(jù)庫(kù)的步驟

接下來(lái),我們將以Python的 logging 模塊為例,演示如何將日志寫(xiě)進(jìn)MySQL數(shù)據(jù)庫(kù)。在實(shí)現(xiàn)過(guò)程中,我們需要進(jìn)行以下步驟:

1.建立數(shù)據(jù)庫(kù)和表

我們需要在MySQL數(shù)據(jù)庫(kù)中建立一個(gè)數(shù)據(jù)庫(kù)和一個(gè)日志表,用于存儲(chǔ)我們的日志信息。可以使用以下命令:

“`

CREATE DATABASE logging_db;

USE logging_db;

CREATE TABLE `logs` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`logdate` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,

`levelname` varchar(50) NOT NULL,

`message` text NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

“`

以上命令會(huì)創(chuàng)建一個(gè)名為 logging_db 的數(shù)據(jù)庫(kù),和一個(gè)名為 logs 的表。logs 表有三個(gè)字段,分別是 id、logdate、levelname 和 message。其中,id 字段為主鍵,自增長(zhǎng)的整數(shù);logdate 字段為時(shí)間類(lèi)型,用于記錄日志時(shí)間;levelname 字段用于記錄日志級(jí)別(INFO、WARNING、ERROR);message 字段用于記錄日志信息。

2.創(chuàng)建 Python 日志實(shí)例

接下來(lái),我們需要在 Python 中創(chuàng)建一個(gè) logging 實(shí)例,用于記錄日志信息??梢允褂靡韵麓a:

“`

import logging

import pymysql

# 配置數(shù)據(jù)庫(kù)連接信息

DB_CONFIG = {

‘host’: ‘localhost’,

‘port’: 3306,

‘user’: ‘root’,

‘password’: ‘password’,

‘database’: ‘logging_db’,

‘charset’: ‘utf8mb4’

}

# 創(chuàng)建數(shù)據(jù)庫(kù)連接

conn = pymysql.connect(**DB_CONFIG)

# 創(chuàng)建日志實(shí)例

logger = logging.getLogger(‘mylogger’)

logger.setLevel(logging.INFO)

# 定義日志存儲(chǔ)到數(shù)據(jù)庫(kù)的處理器

class DBHandler(logging.Handler):

def emit(self, record):

sql = “INSERT INTO logs (logdate, levelname, message) VALUES (‘%s’, ‘%s’, ‘%s’)”

log_message = self.format(record)

conn.ping(reconnect=True)

conn.cursor().execute(sql % (record.created, record.levelname, log_message))

conn.commit()

# 將日志處理器加入到日志實(shí)例中

dbhandler = DBHandler()

logger.addHandler(dbhandler)

“`

以上代碼會(huì)建立一個(gè)名為 mylogger 的日志實(shí)例,并設(shè)置默認(rèn)的日志級(jí)別為 INFO。同時(shí),我們還定義了一個(gè)名為 DBHandler 的日志處理器,它用于將日志信息存儲(chǔ)到數(shù)據(jù)庫(kù)中。在 DBHandler 類(lèi)的 emit 方法中,我們使用 pymysql 庫(kù)連接到 MySQL 數(shù)據(jù)庫(kù),并執(zhí)行插入數(shù)據(jù)的操作。在我們將 DBHandler 對(duì)象加入到 logger 實(shí)例中。

3.記錄日志信息

接下來(lái),我們可以使用 logger 實(shí)例記錄任何日志信息。例如:

“`

logger.info(‘testing info message’)

logger.warning(‘testing warning message’)

logger.error(‘testing error message’)

“`

以上代碼會(huì)依次記錄 INFO、WARNING、ERROR 三個(gè)級(jí)別的日志信息到數(shù)據(jù)庫(kù)中。

三、

到此為止,我們已經(jīng)成功地實(shí)現(xiàn)了將日志寫(xiě)進(jìn)數(shù)據(jù)庫(kù)的示例程序。通過(guò)以上示例,相信讀者已經(jīng)掌握了如何使用 Python logging 模塊將日志信息存儲(chǔ)到MySQL數(shù)據(jù)庫(kù)中的技巧。在實(shí)際應(yīng)用中,我們可以根據(jù)實(shí)際需求來(lái)修改日志記錄的級(jí)別和存儲(chǔ)方式,例如可以將日志信息存儲(chǔ)到其他類(lèi)型的數(shù)據(jù)庫(kù),或是將日志信息發(fā)送到郵件、微信等渠道通知相關(guān)人員。

相關(guān)問(wèn)題拓展閱讀:

  • 怎么將系統(tǒng)日志內(nèi)容添加到數(shù)據(jù)庫(kù)中,通過(guò)用c#語(yǔ)言
  • 日記的作用是什么,ISA 有幾種日志格式,如何把日記寫(xiě)入數(shù)據(jù)庫(kù)
  • 怎么將logback的日志信息異步到oracle數(shù)據(jù)庫(kù)

怎么將系統(tǒng)日志內(nèi)容添加到數(shù)據(jù)庫(kù)中,通過(guò)用c#語(yǔ)言

1.獲取

日志路徑

2.建立一個(gè)

自早州敏動(dòng)更新的軟件

3.利用Timer設(shè)置

自動(dòng)

把路徑下的文件讀取并

導(dǎo)入

數(shù)據(jù)庫(kù)跡旁

這是一個(gè)陸枝思路。。

日記的作用是什么,ISA 有幾種日志格式,如何把日記寫(xiě)入數(shù)據(jù)庫(kù)

看看這篇文章

www.isacn.org

上寬缺很多

比如這洞型里納巧猜

www.isacn.org

/info/list.php?sessid=&sortid=17

日志是用來(lái)記錄首備數(shù)ISA服務(wù)的所有進(jìn)出通訊的.

ISA日志有W3C(TXT),MSDE和滾塌SQL三種格者首式.

最后一種是真正寫(xiě)入數(shù)據(jù)庫(kù)(SQL)的.

怎么將logback的日志信息異步到oracle數(shù)據(jù)庫(kù)

   瞎銷(xiāo)

 oracle.jdbc.driver.OracleDriver

磨慎游  jdbc:oracle:thin:@localhost:1521:ZYD

 scott

 tiger

 

 提示:不理解的,請(qǐng)認(rèn)真仔細(xì)看清楚

logback是log4j作者推出的新日志系統(tǒng),原生支持slf4j通用日志api,允許平滑切換日志系統(tǒng),并且對(duì)簡(jiǎn)化應(yīng)用部署中日志處理的工作做了有益的封裝。

官方地址為:

Logback日志需要依賴(lài)一下jar包:

slf4j-api-1.6.0.jar

logback-core-0.9.21.jar

logback-classic-0.9.21.jar

logback-access-0.9.21.jar

主配置文件為logback.xml,放在src目錄下或是WEB-INF/classes下,logback會(huì)自動(dòng)加載

logback.xml的基本結(jié)構(gòu)如下:

%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} – %msg%n

logback.xml的基本配置信息都包含在configuration標(biāo)簽中,需洞禪要含有至少一個(gè)appender標(biāo)簽用于指定日志輸出方式和輸出格式,root標(biāo)簽為系統(tǒng)默認(rèn)日志進(jìn)程,通過(guò)level指定日志級(jí)別,通過(guò)appender-ref關(guān)聯(lián)前面指定頂?shù)娜罩据敵龇绞健?/p>

例子中的appender使用的是ch.qos.logback.core.ConsoleAppender類(lèi),用于對(duì)控制臺(tái)進(jìn)行日志輸出

其中encoder標(biāo)簽指定日志輸出格式為“時(shí)間 線(xiàn)程 級(jí)別 類(lèi)路徑 信息”

logback的文件日志輸出方式還提供多種日志分包策略

1.文件日志

E:/logs/mylog.txt

E:/logs/mylog-%d{yyyy-MM-dd_HH-mm}.%i.log

MB

%date %level %logger{36} %msg%n

指定輸入文件路徑,encoder指定日志格式。其中,rollingPolicy標(biāo)簽指定的是日志分包策略,ch.qos.logback.core.rolling.TimeBasedRollingPolicy類(lèi)實(shí)現(xiàn)的是基于時(shí)間的分包策略,分包間隔是根據(jù)fileNamePattern中指定的事件最小單位,比如例子中的鏈顫謹(jǐn)%d{yyyy-MM-dd_HH-mm}的最小事件單位為分,它的觸發(fā)方式就是1分鐘,策略在每次想日志中添加新內(nèi)容時(shí)觸發(fā),如果滿(mǎn)足條件,就將mylog.txt復(fù)制到E:/logs/目錄并更名為mylog_13-13.1.log,并刪除原mylog.txt。maxHistory的值為指定E:/logs目錄下存在的類(lèi)似mylog_13-13.1.log文件的更大個(gè)數(shù),當(dāng)超過(guò)時(shí)會(huì)刪除最早的文件。此外,策略還可以互相嵌套,比如本例中在時(shí)間策略中又嵌套了文件大小策略,ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP實(shí)現(xiàn)對(duì)單文件大小的判斷,當(dāng)超過(guò)maxFileSize中指定大大小時(shí),文件名中的變量%i會(huì)加一,即在不滿(mǎn)足時(shí)間觸發(fā)且滿(mǎn)足大小觸發(fā)時(shí),會(huì)生成mylog_13-13.1.log和mylog_13-13.2.log兩個(gè)文件。

2.數(shù)據(jù)庫(kù)日志

com.mysql.jdbc.Driver

jdbc:

root

root

數(shù)據(jù)庫(kù)輸出使用ch.qos.logback.classic.db.DBAppender類(lèi),數(shù)據(jù)源支持c3p0數(shù)據(jù)連接池,例子中使用的MySql,其他配置方式請(qǐng)參考官方文檔。

使用數(shù)據(jù)庫(kù)輸出需要在數(shù)據(jù)庫(kù)中建立3個(gè)表,建表腳本如下

# Logback: the reliable, generic, fast and flexible logging framework.

# Copyright (C), QOS.ch. All rights reserved.

#

# See

license.html for the applicable licensing

# conditions.

# This SQL script creates the required tables by ch.qos.logback.classic.db.DBAppender.

#

# It is intended for MySQL databases. It has been tested on MySQL 5.1.37

# on Linux

BEGIN;

DROP TABLE IF EXISTS logging_event_property;

DROP TABLE IF EXISTS logging_event_exception;

DROP TABLE IF EXISTS logging_event;

COMMIT;

BEGIN;

CREATE TABLE logging_event

(

timestmpBIGINT NOT NULL,

formatted_message TEXT NOT NULL,

logger_nameVARCHAR(254) NOT NULL,

level_string VARCHAR(254) NOT NULL,

thread_nameVARCHAR(254),

reference_flag ALLINT,

arg VARCHAR(254),

arg VARCHAR(254),

arg VARCHAR(254),

arg VARCHAR(254),

caller_filename VARCHAR(254) NOT NULL,

caller_class VARCHAR(254) NOT NULL,

caller_method VARCHAR(254) NOT NULL,

caller_lineCHAR(4) NOT NULL,

event_idBIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY

);

COMMIT;

BEGIN;

CREATE TABLE logging_event_property

(

event_idBIGINT NOT NULL,

mapped_keyVARCHAR(254) NOT NULL,

mapped_value TEXT,

PRIMARY KEY(event_id, mapped_key),

FOREIGN KEY (event_id) REFERENCES logging_event(event_id)

);

COMMIT;

BEGIN;

CREATE TABLE logging_event_exception

(

event_idBIGINT NOT NULL,

i ALLINT NOT NULL,

trace_lineVARCHAR(254) NOT NULL,

PRIMARY KEY(event_id, i),

FOREIGN KEY (event_id) REFERENCES logging_event(event_id)

);

COMMIT;

3.其他

此外logback還提供基于mail,基于jmx等多種日志輸出方式,你也可以通過(guò)繼承ch.qos.logback.core.AppenderBase 自己寫(xiě)appender實(shí)現(xiàn)

除了使用默認(rèn)的日志主線(xiàn)程外,還可以通過(guò)標(biāo)簽定制其他日志線(xiàn)程如:

其中name指定線(xiàn)程針對(duì)的包路徑,level是日志級(jí)別,定義使用那種appender。

例如要實(shí)現(xiàn)打印jdbc提交的sql,可以加入如下logger:

貼出我完整的logback.xml

E:/logs/mylog.txt

E:/logs/mylog-%d{yyyy-MM-dd_HH-mm}.%i.log

MB

%date %level %logger{36} %msg%n

%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %logger{36} – %msg%n

com.mysql.jdbc.Driver

jdbc:

root

–>

總結(jié):logback提供了豐富而高效的日志輸出方式,并通過(guò)滾動(dòng)策略,將實(shí)施時(shí)復(fù)雜的備份策略整合,極大的簡(jiǎn)化的部署成本。

 logback日志寫(xiě)入oracle數(shù)據(jù)庫(kù)的配置如下:

%-20(%d{HH:mm:ss.SSS} ) %-5level %logger{80} – %msg%n

  ${log.base}.log

${log.base}.%d{yyyy-MM-dd}.log.zip   %-20(%d{HH:mm:ss.SSS} ) %-5level %logger{80} –

%msg%n

oracle.jdbc.driver.OracleDriver

jdbc:oracle:thin:@192.168.3.250:1521:devdb

logback

logback

com.mysql.jdbc.Driver

jdbc:

root

qqqqqq

com.mysql.jdbc.Driver

jdbc:

root

qqqqqq

true

–>

com.mysql.jdbc.Driver

jdbc:

root

qqqqqq

oracle.jdbc.driver.OracleDriver

jdbc:oracle:thin:@192.168.3.250:1521:devdb

logback

logback

注意:需要slf4j, logback-core, logback-classic,數(shù)據(jù)庫(kù)驅(qū)動(dòng)jar。

1.將日志按一定約束做答頃好數(shù)據(jù),定時(shí)推送到Oracle服務(wù)器某一目錄

2.Oracle啟動(dòng)一個(gè)定時(shí)job,每小桐舉滾時(shí)局余,每天或者每周啟動(dòng),將新的日志文件導(dǎo)入(這里plsql里面應(yīng)該支持導(dǎo)入語(yǔ)句的)

成都服務(wù)器托管選創(chuàng)新互聯(lián),先上架開(kāi)通再付費(fèi)。
創(chuàng)新互聯(lián)(www.cdcxhl.com)專(zhuān)業(yè)-網(wǎng)站建設(shè),軟件開(kāi)發(fā)老牌服務(wù)商!微信小程序開(kāi)發(fā),APP開(kāi)發(fā),網(wǎng)站制作,網(wǎng)站營(yíng)銷(xiāo)推廣服務(wù)眾多企業(yè)。電話(huà):028-86922220


網(wǎng)頁(yè)標(biāo)題:Python實(shí)現(xiàn)日志寫(xiě)進(jìn)數(shù)據(jù)庫(kù)的示例(Demo) (日志寫(xiě)進(jìn)數(shù)據(jù)庫(kù)demo)
轉(zhuǎn)載注明:http://www.dlmjj.cn/article/cdcojii.html