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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...