NodeJs之log4js

来源:http://www.cnblogs.com/zqzjs/archive/2016/12/11/6160205.html
-Advertisement-
Play Games

log4js "log4js" 是一個管理,記錄日誌的工具。 其實與 "morgan" 的作用類似。 安裝 log4js的6個日誌級別 分別是:trace(藍色)、debug(青色)、info(綠色)、warn(黃色)、error(紅色)、fatal(粉色) 這6個level方便我們給日誌設置不同的 ...


log4js


log4js是一個管理,記錄日誌的工具。

其實與morgan的作用類似。

安裝


npm install -g log4js

log4js的6個日誌級別

分別是:trace(藍色)、debug(青色)、info(綠色)、warn(黃色)、error(紅色)、fatal(粉色)

這6個level方便我們給日誌設置不同的輸出等級,不同的顏色也方便我們區分。

var log4js = require('log4js');

var logger = log4js.getLogger();

logger.trace('test1')
logger.debug('test2')
logger.info('test3')
logger.warn('test4')
logger.error('test4')
logger.fatal('test4')

日誌的效果如下:

log4js的配置

file類型日誌

當然,我們也可以具體配置log4js。

常用配置有##appenders##,##Levels##.appenders用來配置日誌的具體的展現形式,Levels用來配置日誌的展現等級。

例如:我們配置一個寫入到文件中的日誌。

var log4js = require('log4js');

//var logger = log4js.getLogger();

log4js.configure({
    "appenders":[{
        "type":"file",
        "filename":__dirname+"/logs/logger.log",
        "category":"logger" 
    }]
})

var loggerTest = log4js.getLogger('logger')
loggerTest.info('test')

logger.log文件中:

[2016-12-11 16:32:51.303] [INFO] logger - test

一定要先建立logs文件夾,不然會報錯哦

我們也可以配置多個:

var log4js = require('log4js');

//var logger = log4js.getLogger();

log4js.configure({
    "appenders":[{
        "type":"file",
        "filename":__dirname+"/logs/logger.log",
        "category":"logger" 
    },{
        "type":"file",
        "filename":__dirname+"/logs/logger2.log",
        "category":"logger2" 
    }]
})

var loggerTest = log4js.getLogger('logger')
var loggerTest2 = log4js.getLogger('logger2')
loggerTest.info('test')
loggerTest2.info('test2')

我們也可以控制輸出的級別,通過在配置文件中添加##levels##

var log4js = require('log4js');

//var logger = log4js.getLogger();

log4js.configure({
    "appenders":[{
        "type":"file",
        "filename":__dirname+"/logs/logger.log",
        "category":"logger" 
    },{
        "type":"file",
        "filename":__dirname+"/logs/logger2.log",
        "category":"logger2" 
    }],
    "levels":{
        "logger":"info",
        "logger2":"warn"
    }
})

var loggerTest = log4js.getLogger('logger')
var loggerTest2 = log4js.getLogger('logger2')
loggerTest.info('test')
loggerTest2.info('test2')

datefilel類型的日誌

上面的日誌輸出的名稱是固定的,這可能不是我們想要的。我們想要每天一個日誌,我們需要修改##type##屬性。

"type":"datefile",
"filename":__dirname+"/logs/logger",
"pattern": "-yyyy-MM-dd-hh.log",
"alwaysIncludePattern": true,
"category":"logger" 

這樣輸出的日誌的文件格式類似這種:logger-2016-12-11-18.log

需要配合##pattern##,##alwaysIncludePattern##來使用。

appenders是用來配置日誌輸出源信心的。

pattern:表示一個文件的時間命名格式,只有配合datefile才起作用
filename:表示文件的路徑名稱
type:表示日誌輸出類型
category:可以理解為一類日誌的表示
alwaysIncludePattern:表示日誌是否包含命名格式,只有配合datefile才起作用
backups:表示備份的文件數量,配合file類型

其他具體的內容可以參見:log4js的wiki

結合express


var log4js = require('log4js');
var express = require("express");
var app = express();
log4js.configure({
    appenders: [
        { type: 'console' },
        { type: 'file', filename: 'logs/log4jsconnect.log', category: 'log4jslog' }
    ]
});
var logger = log4js.getLogger('log4jslog');
app.use(log4js.connectLogger(logger, { level: 'auto' }));

app.get('/', function(req,res) {
    res.send('hello world');
});

列印出:

[2016-12-11 18:53:24.463] [INFO] log4jslog - ::1 - - "GET / HTTP/1.1" 200 170 "" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
[2016-12-11 18:53:24.493] [INFO] log4jslog - ::1 - - "GET /stylesheets/style.css HTTP/1.1" 200 111 "http://localhost:3000/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"
[2016-12-11 18:53:24.599] [ERROR] log4jslog - ::1 - - "GET /favicon.ico HTTP/1.1" 404 1188 "http://localhost:3000/" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"

除了上述的常用的方法,如果想要瞭解很多使用細則的話。可以參看##log4js的example##



您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文主要說明Json的基本概念,和一個在Html中使用Json給元素賦值的小例子,屬於基礎性信息 什麼是 JSON ? JSON 指的是 JavaScript 對象表示法(JavaScript Object Notation) JSON 是輕量級的文本數據交換格式 JSON 獨立於語言 * JSON ...
  • 1、typeof 用來檢測數據類型的運算符 typeof value 返回值首先是一個字元串,其次裡面包含了對應的數據類型,例如:"number"、"string"、"boolean"、"undefined"、"object"、"function" 局限性:1)typeof null ->"obje ...
  • 一、數據類型 5種基本數據類型:Null/Undefined/String/Boolean/Number 1種複雜數據類型:Object 二、數據類型檢測 傳送門《幾種JS數據類型方式及其局限性》 1、typeof 2、instanceof/constructor 3、Object.prototyp ...
  • 一、jQuery插件支持的轉換方式 二、瀏覽器支持的轉換方式(Firefox,Chrome,Opera,Safair,IE9,IE8) 註意:由於ie8(相容模式),ie7和ie6沒有JSON對象,需要使用JSON官方的方式,引入json.js。 三、javascript支持的轉換方式 註意:ie8 ...
  • 在jQuery之焦點圖轉換-左右的基礎上,將jQuery代碼改成js原生,並添加定時器(setInterval()和clearInterval()) ...
  • ...
  • 左右轉換需要在實現左右轉換的同時實現點擊換圖,這樣就需要(num=index;即紅色部分。),詳解見代碼。 ...
  • 以上是一個簡單地焦點圖事例,思路:圖片路徑寫在a標簽的href屬性里,點擊a得到$(this).attr("href");並把這個值給img的src。用簡單地jQuery寫一個點擊事件。 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...