Benutzerdefinierte Protokollierungsfunktion LOG

1. Übersicht

Passen Sie die Protokollierungsfunktion LOG an, um beim Drucken des Protokolls Datum und Uhrzeit, Dateinamen des gedruckten Protokolls, Ausgabeprotokollebene und andere Informationen anzuhängen.

2. Implementierung des Quellcodes

# 自定义日志函数
# 用法:    LOG 日志等级 日志内容
# 日志等级:INFO,WARN,ERROR,DEBUG
# 用法举例:LOG INFO "this is the test"                                                                                                                                                                                                      # LOG "this is test"  : 没有写日志等级,那么缺省设置日志等级为 INFO
LOG()
{
    LOG_DIR="/opt/log"
    LOG_FILE="${LOG_DIR}/my.log"

    local log_level=$1
    local log_content=$2

    #如果日志等级不是INFO,WARN,ERROR,DEBUG,直接把缺省登记设置为INFO,把带的第一个参数当着日志内容,丢弃第二个参数
    if [ "${log_level}" != "INFO" -a "${log_level}" != "WARN" -a "${log_level}" != "ERROR" -a "${log_level}" != "DEBUG" ]; then
        log_level="INFO"
        log_content=$1
    fi

    if [ -z "${log_content}" ]; then
        return
    fi

    local curtime=`date +"%Y-%m-%d %H:%M:%S"`
    local script_name=$(basename $0)     #如果不在文件中使用,直接在命令行使用, 则script_name为空,不显示该参数
    mkdir -p ${LOG_DIR}

    echo "${curtime} ${script_name} ${log_level} ${log_content}" >> ${LOG_FILE} 2>&1
}

3. Protokollierungseffekt

Die erste Hälfte besteht darin, LOG INFO Hallo und andere Modi in der Datei test.sh zu verwenden. Beim Aufruf von LOG zeigt das Protokoll Jahr, Monat, Tag und Uhrzeit, die Datei zum Drucken des Protokolls, die Protokollebene und die spezifischen Daten an Protokollinhalt.

[root@others ~]# tailf /opt/log/my.log 
2023-06-15 14:54:58  INFO hello
2023-06-15 15:00:34 test.sh INFO hello
2023-06-15 15:02:09 test.sh DEBUG this is the debug information .
2023-06-19 11:27:19 test.sh DEBUG this is the debug information .

2023-06-25 16:35:08  INFO hahaha
2023-06-25 16:35:19  ERROR 123
2023-06-25 16:36:22  DEBUG 1234565
2023-06-25 16:37:26  INFO 1

4. Weitere Anweisungen zur Verwendung von Protokollen

4.1. Legen Sie die Standardprotokollstufe fest

Wenn die Protokollebene nicht INFO, WARN, ERROR oder DEBUG ist, setzen Sie die Standardebene direkt auf INFO, verwenden Sie den ersten Parameter als Protokollinhalt und verwerfen Sie den zweiten Parameter.

Zum Beispiel: LOG hahaha 123456, 123456 wird verworfen und wie folgt aufgezeichnet:

25.06.2023 16:39:50 INFO hahaha 

4.2. Zeigen Sie die Datei an, die diese Funktion aufruft

Wenn Sie zum Aufrufen der Funktion eine Datei verwenden, wird der Dateiname zum Drucken des Protokolls angezeigt, wie im Bild oben gezeigt: test.sh.

Wenn Sie LOG direkt über die Befehlszeile aufrufen, wird der Dateiname für den Aufruf von LOG nicht angezeigt und es erscheint eine Warnung:

Basisname: ungültige Option – 'b'
 

4.3. Sonstiges

Wenn das einzugebende Protokoll Leerzeichen enthält, müssen Sie „ “ verwenden, um den Inhalt einzuschließen.

LOG  "this is  a test"

Wenn das Protokoll keine Leerzeichen enthält, benötigen Sie keine Anführungszeichen.

LOG  hahahahaha

Supongo que te gusta

Origin blog.csdn.net/aligeter/article/details/131381289
Recomendado
Clasificación