第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會有你想問的

在 golang 中將日志內(nèi)容寫入自定義文件

在 golang 中將日志內(nèi)容寫入自定義文件

Go
慕的地6264312 2022-01-04 09:56:59
我運(yùn)行一個(gè)服務(wù)器,將日志內(nèi)容重定向到一個(gè)文件,說“current.log”用于調(diào)試目的,我無法向用戶顯示。但是我遇到了一個(gè)場景,我需要向用戶顯示一組特定的日志,以便他們可以跟進(jìn)后端正在進(jìn)行的過程。因此,我嘗試為每個(gè)用戶(每個(gè)用戶一個(gè)日志文件)編寫另一組日志(在自定義文件中),我需要向用戶顯示不包含任何安全數(shù)據(jù)的日志。
查看完整描述

2 回答

?
絕地?zé)o雙

TA貢獻(xiàn)1946條經(jīng)驗(yàn) 獲得超4個(gè)贊

您可以使用lumberjack.v2,通過它您可以為每個(gè)用戶定義一個(gè)自定義日志文件。


在以下代碼段中,我使用一個(gè)簡單的布爾值來確定是否應(yīng)將每個(gè)用戶的日志內(nèi)容添加到日志文件中。


package main


import (

    "gopkg.in/natefinch/lumberjack.v2"

    "io/ioutil"

    "log"

    "strconv"

)


type user struct {

    id     int

    logger *log.Logger

}


func createUser(id int, logWanted bool) user {

    var l *log.Logger


    if logWanted {

        // Here the log content will be added in the user log file

        userFIle := &lumberjack.Logger{

            Filename:   "user_log_" + strconv.Itoa(id) + ".log",

            MaxSize:    250, // mb

            MaxBackups: 5,

            MaxAge:     10, // in days

        }

        l = log.New(userFIle, "User: ", log.Ldate|log.Ltime|log.Lshortfile)

    } else {

        // Here the log content will go nowhere

        l = log.New(ioutil.Discard, "User: ", log.Ldate|log.Ltime|log.Lshortfile)

    }

    return user{id, l}

}


func doSomething(u user) {

    u.logger.Printf("Log content: user id %v \n", u.id)

}


func main() {

    user1 := createUser(1, true)

    user2 := createUser(2, false)

    user3 := createUser(3, true)

    doSomething(user1)

    doSomething(user2)

    doSomething(user3)

}

這將創(chuàng)建一個(gè)新的組滾動日志文件與原來的日志中的每個(gè)用戶上。

  • user1 的“user_log_1.log”

  • user3 的“user_log_3.log”

  • 并且沒有用戶 2 的日志文件


查看完整回答
反對 回復(fù) 2022-01-04
?
波斯汪

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超4個(gè)贊

解決此問題的一種方法是使用記錄器機(jī)制,您可以在其中為記錄器創(chuàng)建一個(gè)對象(具有特定文件位置),然后使用該對象寫入日志。這樣,使用特定對象寫入的日志將被重定向到該特定文件。


我使用的記錄器包是“github.com/sadlil/gologger”


示例代碼:


package main

import (

     "github.com/sadlil/gologger"

)


func main() {

    logger := gologger.GetLogger(gologger.FILE, "/home/user/path/user.log")

    logger.Log("Test file log")

}

注意:文件將在對象創(chuàng)建時(shí)自動創(chuàng)建


因此您可以為每個(gè)用戶動態(tài)創(chuàng)建一個(gè)記錄器對象(每個(gè)用戶獲得不同的日志文件),并且日志將被重定向到該文件。日志格式將是


[LOG] [2016-04-07 11:31:28] [main::test.go::main] [8] 測試文件日志


查看完整回答
反對 回復(fù) 2022-01-04
  • 2 回答
  • 0 關(guān)注
  • 336 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號