1. 程式人生 > >golang第三方日誌包seelog配置檔案詳解

golang第三方日誌包seelog配置檔案詳解

開發任何專案,都離不開日誌,配好自己的專案日誌輸出,往往是開發專案的前提。在golang中,seelog應該是比較有名的日誌處理包了,功能非常強大,seelog官方文件

一、seelog主要功能

下面我們看看seelog有啥強大

  • 設定不同級別的日誌;
  • 輸出到終端或檔案;
  • 過濾指定級別日誌;
  • 定義多種不同的日誌輸出格式;
  • 根據觸發日誌的檔名或者函式名來區別輸出日誌;
  • 通過 SMTP 或 TCP 轉發日誌(網路轉發日誌);
  • 滾動日誌檔案(過期日誌自動清除)。

二、安裝seelog

$ go get github.com/cihub/seelog

三、使用seelog

我們先看看一個官方的demo

package main

import (
    log "github.com/cihub/seelog"
)

func main() {
    defer log.Flush()
    log.Info("Hello from Seelog!")
}

很簡單是吧,匯入包,就直接可以用了,下面我們看看如何通過配置檔案高度定製我們的日誌。

import (
    log "github.com/cihub/seelog"
)

func SetupLogger() {
    logger, err := log.LoggerFromConfigAsFile("seelog.xml"
) if err != nil { return } log.ReplaceLogger(logger) }

seelog的配置檔案一般用xml,下面我們看seelog.xml配置檔案的大體框架

<seelog>
    <exceptions>
        <exception ... />
        <exception ... />
        ...
    </exceptions>
    <outputs>
        <splitter>
            <console/>
            <file ...
/> <rollingfile ... /> <smtp> ... </smtp> <buffered> ... </buffered> <conn ... /> </splitter> <filter> ... </filter> </outputs> <formats> <format ... /> <format ... /> ... </formats> </seelog>
<!-- type 設定記錄器型別 https://github.com/cihub/seelog/wiki/Logger-types-reference
minlevel 設定日誌最低級別; maxlevel 設定日誌的最高級別
也可以通過 <seelog levels="trace,info,critical"> 設定日記級別 -->
<seelog type="asynctimer" asyncinterval="5000000" minlevel="debug" maxlevel="error">
    <exceptions>
        <!-- <exception> 是為特定的程式檔案(filepattern)或函式(funcpattern)設定特殊的日誌規則 -->
        <exception funcpattern="*main.test*Something*" minlevel="info"/>
        <exception filepattern="*main.go" minlevel="error"/>
    </exceptions>

    <!-- <outputs> formatid 指定日誌輸出的格式(格式在<formats>標籤中定義) -->
    <outputs formatid="main">
        <!-- <console> 標籤表示輸出到終端 -->
        <console/>

        <!-- <splitter> 用於細分<outputs>日誌格式,內部支援:file(檔案), rollingfile(滾動檔案,自動清除過期),
        buffered(日誌寫到記憶體再寫到檔案), smtp(傳送日誌到郵件), con(網路轉發) -->
        <splitter formatid="format1">
            <!-- log.log, log2.log將按<formats>標籤中的id="format1"格式寫入 -->
            <file path="log.log"/>
            <file path="log2.log"/>
        </splitter>
        <splitter formatid="format2">
            <file path="log3.log"/>
            <file path="log4.log"/>
        </splitter>

        <!-- <rollingfile>滾動檔案(定期清除過期日誌)
        formatid: 指定日誌格式; type="size" 按大小; maxsize: 單日誌檔案最大大小; maxrools: 最大檔案數 -->
        <rollingfile formatid="someformat" type="size" filename="./log/roll.log" maxsize="100" maxrolls="5" />

        <!-- <buffered> 將日誌先存在記憶體中,定期寫入檔案,適合日誌併發量較大或 IO 比較緊張的場合
        size: 快取大小; flushperiod: 快取間隔(毫秒) -->
        <buffered formatid="testlevels" size="10000" flushperiod="1000">
            <file path="./log/bufFileFlush.log"/>
        </buffered>

        <!-- <filter>用於單獨處理某級別日誌
        過濾日誌,把級別是error的通過郵件smtp方式傳送出去(一般會發給相應的運維人員) -->
        <filter levels="error">
            <file path="./log/error.log"/>
            <smtp senderaddress="[email protected]" 
                  sendername="Automatic notification service" 
                  hostname="mail.none.org" 
                  hostport="587" 
                  username="nns" 
                  password="123">
                <recipient address="[email protected]"/>
                <recipient address="[email protected]"/>
            </smtp>
            <!-- 按tcp4網路協議傳送日誌 -->
            <conn net="tcp4" addr="server.address:5514" tls="true" insecureskipverify="true" />
        </filter>

    </outputs>

    <!-- <formats> 定製日誌的輸出格式
    https://github.com/cihub/seelog/wiki/Format-reference -->
    <formats>
        <format id="main" format="%Date(2006 Jan 02/3:04:05.000000000 PM MST) [%Level] %Msg%n"/>
        <format id="someformat" format="%Ns [%Level] %Msg%n"/>
        <format id="testlevels" format="%Level %Lev %LEVEL %LEV %l %Msg%n"/>
        <format id="usetags" format="&lt;msg&gt;%Msg&lt;/time&gt;"/>
        <format id="format1" format="%Date/%Time [%LEV] %Msg%n"/>
        <format id="format2" format="%File %FullPath %RelFile %Msg%n"/>
    </formats>
</seelog>

初次接觸難免會覺得配置檔案的內容有點多,難以理解,其實只要我們理解它配置檔案的大體框架,然後自己試著更改配置檔案,看看輸出什麼,就很快明白了。

<!-- 我只需要把日誌按指定格式輸出到終端 -->
<seelog type="asynctimer" asyncinterval="1000000" minlevel="debug" maxlevel="error">
    <outputs formatid="main">
        <!-- 僅輸出到終端 -->
        <console/>
    </outputs>
    <formats>
        <!-- 設定格式 -->
        <format id="main" format="%UTCDate %UTCTime - [%LEV] - %RelFile - l%Line - %Msg%n"/>
    </formats>
</seelog>

<!-- ****** 我是分割線 ***** -->

<!-- 現在我想把日誌輸出到終端同時也把日誌輸出到檔案 -->
<seelog type="asynctimer" asyncinterval="1000000" minlevel="debug" maxlevel="error">
    <outputs formatid="main">
        <console/>
        <!-- 輸出到檔案,且不同於終端的日誌格式 -->
        <splitter formatid="format1">
            <file path="log.log"/>
        </splitter>
    </outputs>
    <formats>
        <!-- 設定格式 -->
        <format id="main" format="%UTCDate %UTCTime - [%LEV] - %RelFile - l%Line - %Msg%n"/>
        <format id="format1" format="%Date(2006 Jan 02/3:04:05.000000000 PM MST) [%Level] %Msg%n"/>
    </formats>
</seelog>

相關推薦

golang第三方日誌seelog配置檔案

開發任何專案,都離不開日誌,配好自己的專案日誌輸出,往往是開發專案的前提。在golang中,seelog應該是比較有名的日誌處理包了,功能非常強大,seelog官方文件 一、seelog主要功能 下面我們看看seelog有啥強大 設定不同級別的日誌;

日誌相關---log4j2配置檔案

一、關於配置檔案的名稱以及在專案中的存放位置 log4j 2.x版本不再支援像1.x中的.properties字尾的檔案配置方

[轉]log4j日誌資訊配置檔案

使用log4j 記錄日誌甚是方便,其提供了兩種日誌配置方式,log4j.propertes和log4j.xml,這篇檔案先貼出log4j.properties配置方式 1、log4j.properties檔案配置簡析 下面給出了log4j.properties檔案常用的一

Log4j的日誌輸出級別和配置檔案

一,Log4j的日誌輸出級別     Log4j由三個重要的元件構成:日誌資訊的優先順序,日誌資訊的輸出目的地,日誌資訊的輸出格式。日誌資訊的優先順序從高到低有ERROR、WARN、 INFO、DEBUG,分別用來指定這條日誌資訊的重要程度;日誌資訊的輸出目的地指定了日誌將

log4j日誌配置檔案

   部落格來由,前一段時間,架構組統一修改了log4j的檔案,修改之後,單元測試日誌就打印不出來了。所以就學習了一下log4j.properties檔案的配置。 1.log4j是什麼?    

日誌系列2——logback配置檔案

[toc] ### 1.logback 配置檔案的組成 #### 1.1root節點   root 節點是必選節點,用來指定最基礎的日誌輸出級別,只有一個 level 屬性,用於設定列印級別,可選如下:`TRACE`,`DEBUG`,`INFO`,`WARN`,`ERROR`,`ALL`,`OFF`。

三大框架(ssh)學習——配置檔案(一)

配置檔案詳解 指定web應用預設字符集 <constant name="struts.i18n.encoding" value="gbk" /> 此配置相當於: request.setCharacterEncoding(“gbk”); r

三大框架(ssh)學習——配置檔案(二)

多配置檔案實現 專案經常需要多人協作開發,但是如果大家都是用同一個struts.xml檔案,會互相影響不利於開發的正常開展。這樣,我們可以通過<include>元素指定多個配置檔案。 可以在src下面建立多個struts配置檔案。然後再struts.xml中分別引入: str

Nginx配置配置檔案

文章目錄 配置檔案 nginx.conf配置檔案詳解 用於除錯、定位問題的配置引數 正常執行必備的配置引數 優化效能的配置引數 事件相關配置 Fastcgi相關配置引數 常需要調整的引數 nginx作為web伺服器時使

Hibernate_day01---Hibernate環境搭建、配置檔案、核心api介紹

JavaEE三層結構對應的框架 1) web層:struts2框架 2) service層:spring框架 3)dao層:hibernate框架 -- 對資料庫進行crud操作 什麼是框架: 可複用的設計構件 作用:可以少寫一部分程式碼。使用框架寫程式,會幫我們實現一部

scrapy settings配置檔案

# -*- coding: utf-8 -*- # Scrapy settings for step8_king project # # For simplicity, this file contains only settings considered important or # comm

keepalived介紹及配置檔案

keepalived介紹 Keepalived軟體起初是專為LVS負載均衡軟體設計的,用來管理並監控LVS集群系統中各個服務節點的狀態,後來又加入了可以實現高可用的VRRP功能。因此,Keepalived除了能夠管理LVS軟體外,還可以作為其他服務(例如:Nginx、Hapr

Maven的pom.xml配置檔案

轉自: Maven的pom.xml配置檔案詳解  <!--父專案的座標。如果專案中沒有規定某個元素的值,那麼父專案中的對應值即為專案的預設值。 座標包括group ID,artifact ID和 version。-->  &

【MyBatis Generator】程式碼自動生成工具 generatorConfig.xml配置檔案

MyBatis Generator官網地址:http://www.mybatis.org/generator/index.html MyBaris Generator中文地址:http://mbg.cndocs.ml/ 在MBG中,最主要也最重要的,就是generatorConfig.xml

轉:ssm spring+springmvc+mybatis中的xml配置檔案

這幾天一直在整合SSM框架,雖然網上有很多已經整合好的,但是對於裡面的配置檔案並沒有進行過多的說明,很多人知其然不知其所以然,經過幾天的搜尋和整理,今天總算對其中的XML配置檔案有了一定的瞭解,所以拿出來一起分享一下,希望有不足的地方大家批評指正~~~ 首先   這篇文章暫時只對框架中所要用到的配

Spring Boot(二)配置檔案

簡介 Spring Boot使用“習慣由於配置”(專案中存在大量預設的配置,而且內建tomcat)的理念,讓你的無需手動進行配置就可以將專案執行起來。使用Spring Boot很容易建立一個獨立執行的、準生產級別的Spring框架的專案。同時,Spring Boot還提供一個全域性配置檔案對一些

Apache httpd.conf配置檔案

常用配置指令說明 1. ServerRoot:伺服器的基礎目錄,一般來說它將包含conf/和logs/子目錄,其它配置檔案的相對路徑即基於此目錄。預設為安裝目錄,不需更改。 語法:ServerRoot directory-path 如: ServerRoot "/usr/local/ap

spring配置檔案--真的蠻詳細

  spring配置檔案詳解--真的蠻詳細 轉自: http://book.51cto.com/art/201004/193743.htm 此處詳細的為我們講解了spring2.5的實現原理,感覺非常有用

Java程式設計師從笨鳥到菜鳥之(五十三)細談Hibernate(四)Hibernate常用配置檔案

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

mosquitto配置檔案

安裝完成之後,所有配置檔案會被放置於/etc/mosquitto/目錄下,其中最重要的就是Mosquitto的配置檔案,即mosquitto.conf,以下是詳細的配置引數說明。 # ===========================================================