国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Nginx自定義日志中時(shí)間格式

這篇具有很好參考價(jià)值的文章主要介紹了Nginx自定義日志中時(shí)間格式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

背景

工作需要對(duì)接內(nèi)部的日志中臺(tái),對(duì)日志打印有固定的格式要求,為了使Nginx的access日志也能被采集,需要對(duì)日志格式進(jìn)行自定義,要求日志格式為:

yyyy-MM-dd HH:mm:ss.SSS LOG_LEVEL LOG_MSG ---> 時(shí)間格式+打印級(jí)別+業(yè)務(wù)日志

如:

23-11-18 17:34:23.738 DEBUG monitor-7 org.apache.ibatis.logging.jdbc.BaseJdbcLogger.debug:137: xxxxx

但目前我們Nginx按照默認(rèn)格式配置,大致如下:

192.23.4.5 -- [18/Nov/2023L18:58:52 +0800] "GET /api/cluster HTTP/1.1" 200 155 "https://xxx.xx.xx.x"

時(shí)間格式無(wú)法不符合要求,并且未區(qū)分日志級(jí)別,因此,需要對(duì)日志打印格式進(jìn)行自定義

自定義日志格式配置

1.重新定義日志格式

點(diǎn)擊查看代碼
# 原日志格式
log_format main '$remote_addr - $remote_user [$time_local] "$request" $status $body_bytes_sent "http_referer" "$http_user_agent" "$http_x_forwarded_for";

# 修改后日志格式
log_format main '$time_zh_ms $log_level - $remote_addr - $remote_user "$request" $status $body_bytes_sent "http_referer" "$http_user_agent" "$http_x_forwarded_for";

# 對(duì)比修改前后差異,其實(shí)就是
1.自定義了$time_zh_ms,在下面的配置中,將其設(shè)置為yyyy-MM-dd HH:mm:ss.SSS格式
2.自定義了$log_level,為日志打印級(jí)別,下面的配置中,將按照請(qǐng)求響應(yīng)碼來判斷為何種日志打印級(jí)別

以上只是為了滿足日志采集需要,其他字段可按實(shí)際情況變動(dòng)

2.定義時(shí)間格式的轉(zhuǎn)換

Nginx默認(rèn)支持的時(shí)間格式為iso8601,此處我們需要通過獲取到內(nèi)置時(shí)間變量$time_iso8601$msec,具體配置如下:

點(diǎn)擊查看代碼
# 將iso8601格式時(shí)間轉(zhuǎn)換為yyyy-MM-dd HH:mm:ss格式
# 按照正則將時(shí)間字符串分割為6部分,分別為年月日時(shí)分秒,再拼接到$time_zh自定義變量中
if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})") {
  set $year $1;
  set $month $2;
  set $day $3;
  set $hour $4;
  set $minutes $5;
  set $seconds $6;
  set $time_zh "$1-$2-$3 $4:$5:$6";
}

# 獲取毫秒時(shí)間戳,并拼接到$time_zh之后
if ($msec ~ "(\d+)\.(\d+)") {
  set $time_zh_ms $time_zh.$2
}

# 注意:$time_zh_ms其實(shí)就是在log_format中定義的日志格式第一個(gè)字段

3.根據(jù)響應(yīng)碼定義日志級(jí)別

Nginx的access日志默認(rèn)是沒有日志級(jí)別這一說法的,此處可視為我們?yōu)榱诉m配業(yè)務(wù)而做的規(guī)則,在我們的使用場(chǎng)景中,將返回碼為4或5的請(qǐng)求,視為錯(cuò)誤,打印為ERROR級(jí)別,其他請(qǐng)求為INFO級(jí)別

點(diǎn)擊查看代碼
# 如果http返回碼為4或5開頭,則設(shè)置log_level為ERROR,否則為INFO
map $status $log_level {
  ~^[45] ERROR;
  default INFO;
}

# 此處$status為Nginx內(nèi)置變量,代表請(qǐng)求的響應(yīng)碼,log_level為自定義變量

4.設(shè)置日志使用具體格式并打印到文件

點(diǎn)擊查看代碼
access_log /dev/stdout main;
access_log /etc/nginx/logs/access.log main;
error_log /dev/stdout;
error_log /etc/nginx/logs/error.log;

5.完整配置示例截圖

Nginx自定義日志中時(shí)間格式

6.日志打印效果

Nginx自定義日志中時(shí)間格式文章來源地址http://www.zghlxwxcb.cn/news/detail-746422.html

到了這里,關(guān)于Nginx自定義日志中時(shí)間格式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Nginx map 實(shí)現(xiàn)時(shí)間格式轉(zhuǎn)換

    Nginx map 實(shí)現(xiàn)時(shí)間格式轉(zhuǎn)換

    哈嘍大家好,我是咸魚 最近我們需要把 Nginx 的日志接入到自研的日志采集平臺(tái)上,但是這個(gè)平臺(tái)只支持 JSON 格式,所以需要 把 Nginx 日志格式改成 JSON 格式 例如下面這樣的效果 剛開始在主配置文件 nginx.conf 中定義了一個(gè)名叫 json 的日志格式字段 驗(yàn)證的時(shí)候其他內(nèi)容沒啥問題

    2024年02月08日
    瀏覽(18)
  • 微服務(wù)系列文章 之 nginx日志格式分析以及修改

    微服務(wù)系列文章 之 nginx日志格式分析以及修改

    如何自定義日志格式,就需要修改nginx日志打印格式 ? 日志說明: $remote_addr 客戶端IP地址 $remote_user 客戶端用戶名稱,一般為空 [$time_local] 訪問時(shí)間 “$request” 記錄請(qǐng)求HTTP的方式以及URL $status 狀態(tài)碼 $body_bytes_sent 發(fā)送給客戶端的文件大小 “$http_referer” 記錄從哪個(gè)頁(yè)面訪問

    2024年02月16日
    瀏覽(16)
  • tomcat和nginx的日志記錄請(qǐng)求時(shí)間

    ? ? ? ? 當(dāng)系統(tǒng)卡頓時(shí)候,我們需要分析時(shí)間花費(fèi)在哪個(gè)緩解。項(xiàng)目的后端接口可以記錄一些時(shí)間,此外,在我們的tomcat容器和nginx網(wǎng)關(guān)上也可以記錄一些有關(guān)請(qǐng)求用戶,請(qǐng)求時(shí)間,響應(yīng)時(shí)間的數(shù)據(jù),可以提供更多的信息以便于排查問題。 1.tomcat日志 server.xml 以下列出了一些

    2024年02月14日
    瀏覽(83)
  • Elasticsearch自定義時(shí)間格式

    Elasticsearch自定義時(shí)間格式

    DateFormat.custom:自定義屬性格式; pattern:時(shí)間格式 epoch_millis:時(shí)間戳? ?

    2024年02月15日
    瀏覽(17)
  • vue + element實(shí)現(xiàn)el-date-picker的時(shí)間格式轉(zhuǎn)換,以及自定義時(shí)間格式,修改輸入的時(shí)間格式

    vue + element實(shí)現(xiàn)el-date-picker的時(shí)間格式轉(zhuǎn)換,以及自定義時(shí)間格式,修改輸入的時(shí)間格式

    如果只是需要修改傳給后端的值或者格式,可以使用 value-format實(shí)現(xiàn),可以在文檔上查看詳細(xì)的介紹 使用自定義指令,首先需要?jiǎng)?chuàng)建一個(gè)自定義指令代碼的存放位置,我是/utils/directive/dataForm/dataformat.js這個(gè)路徑創(chuàng)建的內(nèi)容 自定義指令內(nèi)容

    2024年02月15日
    瀏覽(22)
  • Unity中獲取時(shí)間戳、日期、時(shí)間、毫秒、秒以相互轉(zhuǎn)換、自定義格式時(shí)間

    Unity中獲取時(shí)間戳、日期、時(shí)間、毫秒、秒以相互轉(zhuǎn)換、自定義格式時(shí)間

    這里附帶一個(gè)時(shí)間戳和時(shí)間轉(zhuǎn)換的網(wǎng)址 時(shí)間戳就是從1970年1月1日0時(shí)0分0秒起到現(xiàn)在的總毫秒數(shù),為什么時(shí)1970/1/1/00:00:00,因?yàn)榈谝慌_(tái)計(jì)算機(jī)發(fā)明時(shí)間是這個(gè)時(shí)間,所以時(shí)間戳誕生了。 比如說你要做一些時(shí)間相關(guān)的功能,那么基本都會(huì)用到時(shí)間戳。而且時(shí)間戳是精確的,比如說

    2024年02月05日
    瀏覽(124)
  • 工作6年了日期時(shí)間格式化還在寫YYYY瘋狂給隊(duì)友埋雷

    工作6年了日期時(shí)間格式化還在寫YYYY瘋狂給隊(duì)友埋雷

    前言 哈嘍小伙伴們好久不見,今天來個(gè)有意思的雷,看你有沒有埋過。 正文 不多說廢話,公司最近來了個(gè)外地回來的小伙伴,在廣州工作過6年,也是一名挺有經(jīng)驗(yàn)的開發(fā)。 他提交的代碼被小組長(zhǎng)發(fā)現(xiàn)有問題,給打回了,原因是里面日期格式化的用法有問題,用的SimpleDate

    2024年02月12日
    瀏覽(21)
  • 關(guān)于小程序中時(shí)間格式化解決方法

    小程序格式化時(shí)間方法 方法(1): const formatDate = (num, fmt) = { if (num == \\\'\\\') { return \\\'\\\' } const date = new Date(num) let o = { \\\"M+\\\": date.getMonth() + 1, //月份 \\\"d+\\\": date.getDate(), //日 \\\"h+\\\": date.getHours(), //小時(shí) \\\"m+\\\": date.getMinutes(), //分 \\\"s+\\\": date.getSeconds(), //秒 \\\"q+\\\": Math.floor((date.getMonth() + 3) / 3), //季度

    2024年02月13日
    瀏覽(20)
  • 【運(yùn)維知識(shí)大神篇】超詳細(xì)的ELFK日志分析教程7(filebeat常用模塊+filebeat采集固定格式日志+自定義日志格式寫入ES+EFK架構(gòu)轉(zhuǎn)ELFK架構(gòu)+兩個(gè)業(yè)務(wù)實(shí)戰(zhàn)練習(xí))

    【運(yùn)維知識(shí)大神篇】超詳細(xì)的ELFK日志分析教程7(filebeat常用模塊+filebeat采集固定格式日志+自定義日志格式寫入ES+EFK架構(gòu)轉(zhuǎn)ELFK架構(gòu)+兩個(gè)業(yè)務(wù)實(shí)戰(zhàn)練習(xí))

    本篇文章繼續(xù)給大家介紹ELFK日志分析,詳細(xì)請(qǐng)見下面目錄。 目錄 filebeat采集nginx日志 filebeat模塊使用 一、Nginx模塊 二、tomcat模塊 三、filebeat寫數(shù)據(jù)到ES集群自定義索引 四、filebeat自定義字段之nginx寫入ES 五、filebeat自定義字段之tomcat寫入ES 六、indices模塊實(shí)現(xiàn)多個(gè)input寫入不同

    2024年02月05日
    瀏覽(19)
  • vue前端如何去掉后端接口返回的一個(gè)字段中時(shí)間里面的時(shí)分秒 只需要年月日

    在 Vue 前端中,可以使用 JavaScript 中的 Date 對(duì)象來處理日期。對(duì)于從后端接口返回的日期字符串,可以先將其轉(zhuǎn)換為 Date 對(duì)象,然后再使用 getFullYear()、getMonth()、getDate() 等方法獲取年月日等信息 。 以下是一個(gè)示例函數(shù),它接受一個(gè)日期字符串作為參數(shù),并返回 YYYY-MM-DD 格式

    2024年02月14日
    瀏覽(21)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包