http://blog.csdn.net/cdnight/article/details/50857268

在做项目中,我们的node日志采用的是log4js框架,使用文件方式存储,但在后面的需求中增加了一项,需要将node日志服务接入ELK(Elasticsearch+logstash+kibana),运维需要匹配node 的日志文件。在这个过程中,熟悉了一下log4js的配置问题。

type:file 会以文件方式存储,可以配合maxLogSize,backups,按照文件大小进行分割,如果文件log-2018-1-23.log超过maxLogSize设置的大小,则会将文件备份成log-2018-1-23.log.1,然后再创建log-2018-1-23.log,重新再写。而backups则用于设置分割的文件个数,最多滚动几个文件。

1.1 filename配置
a.filename是一个目录加上文件名,路径就是日志文件存储的路径.
b.此路径可以是相对路径也可以绝对路径,当是相对路径时,是相对于工程根目录.
c.无论是相对路径还是绝对路径,路径过程中的所有文件夹必须事先手动创建好,log4js不会自动创建,如路径不存在则会报错.
d.最后的文件名就是输出文件的名字模版,真实的名字会一定的修改,
d1:type:datefile 时会加上时间标签,如 [log-2015-01-24 , log-2015-01-25]
d2:type:file时 如果文件过大,份文件后会增加一个编号标签. [log.1 log.2 log.3 ...]
1.2 maxLogSize配置
这个只在type:file模式有效.表示文件多大时才会创建下一个文件,单位是字节.实际设置时具体的值根据业务来定,但是不推荐大于100Mb.

log4js.configure({
appenders: [{
type: 'console'
},
{
type: 'file', //file就是采用文件格式存储
filename: logFileName.replace(/\\/g, '/'),
maxLogSize: MAXLOGSIZE,
backups: ,
category: loggerName
}
],
replaceConsole: false
});

按照日期生成文件:

下面这个生成的文件名就是date-2015-01-24-14:24:12.log
        pattern精确到ss(秒)就是一秒一个文件,精确到mm(分)就是一分一个文件,一次类推:hh(小时),dd(天),MM(月),yyyy(年),yy(年后两位),注意大小写!

{
"category":"log_date",
"type": "dateFile",
"filename": "./logs/log_date/date",
"alwaysIncludePattern": true,
"pattern": "-yyyy-MM-dd-hh:mm:ss.log"
}

log4js日志配置问题的更多相关文章

  1. Node.js log4js日志记录

    这次需要给之前弄的文件服务器添加日志记录,一般每天产生的日志会特别多所以安装日期来划分是最好的,这里我用了express框架,为了适应express框架这里在log.js文件中写了use方法. //日 ...

  2. Nodejs 使用log4js日志

    一.创建log4.js文件,保存日志到log文件,并在控制台输出,如果不控制台输出,把删除红色的代码 const log4js = require('log4js'), path = require( ...

  3. nodejs之log4js日志记录模块简单配置使用

    在我的一个node express项目中,使用了log4js来生成日志并且保存到文件里,生成的文件如下: 文件名字叫:access.log 如果在配置log4js的时候允许了同时存在多个备份log文件 ...

  4. log4js日志

    安装log4js:npm install log4js express中配置log4js中间件: var log = require("./modules/utils/logUtil.js& ...

  5. nodejs之日志管理

    开发一个项目时,可以通过控制台输出或者debug来获取到项目的运行信息.当项目上线时,我们就需要通过日志来分析.如同Java的log4j,nodejs中也有相关的log4js.使用过log4j的同学应 ...

  6. express+gulp构建项目(四)env环境变量

    这里的文件的作用是负责设置env环境变量和日志. index.js try { require('dotenv').load({silent: true}); //dotenv从一个.env文件中读取 ...

  7. mysql的1067错误 - 2

    上一篇博文<mysql的1067错误>中由于日志配置问题产生1067错误. 由于要升级MySQL到V5.6,所以拷贝my.ini和数据文件到新的系统上. 在启动服务时,又出现1067错误! ...

  8. node.js 接口调用示例

    测试用例git地址(node.js部分):https://github.com/wuyongxian20/node-api.git 项目架构如下: controllers: 文件夹下为接口文件 log ...

  9. node 日志管理log4js

    node 日志管理log4js 一.默认的控制台输出 我们使用express框架时,开发模式用node或者supervisor启动nodejs应用时,控制台都是显示如下的日志. GET /css/bo ...

随机推荐

  1. CentOS 6.x Radius

    CentOS 6.x Radius 一.   实现环境: 1.系统:CentOS  release  6.6 (Final) 2.需要软件包: 1) freeradius-2.1.12-6.e16.x ...

  2. 《Spring设计思想》AOP设计基本原理

    0.前言 Spring 提供了AOP(Aspect Oriented Programming) 的支持, 那么,什么是AOP呢?本文将通过一个另外一个角度来诠释AOP的概念,帮助你更好地理解和使用Sp ...

  3. 大数据处理之道 (htmlparser获取数据&lt;一&gt;)

    一:简单介绍 (1)HTML Parser是一个用于解析Html的Java的库.可採用线性或嵌套两种方式.主要用于网页的转换或提取,他有一些特性:过滤器filter,遍历器visitors,通常的标签 ...

  4. 解决Install failed uid changed

    出现此问题的原因大多是apk冲突造成,解决的办法如下: 将apk相关文件和相关内容删除 (1) 将手机root,Window上装root大师等工具root成功率较高 (2) 删除可能相关的文件:/da ...

  5. 阿里云Ubuntu部署java web(1) - 系统配置

    系统版本号:ubuntu 12.04 64位 ssh链接服务器(使用终端远程链接): ssh -l username IP地址 假设出现相似例如以下错误: @    WARNING: REMOTE H ...

  6. <label>标签for属性

    label 元素不会向用户呈现任何特殊效果.不过,它为鼠标用户改进了可用性.如果您在 label 元素内点击文本,就会触发此控件.就是说,当用户选择该标签时,浏览器就会自动将焦点转到和标签相关的表单控 ...

  7. CRM2011部署问题小结

    1 CRM2011部署当插件太多,并且文件太多的时候选择硬盘部署 2 在生产环境这样复杂的CRM2011部署环境的时候弄清楚每台CRM服务器的结构是很重要的弟一步 3 一定要注意DMZ区和内网隔离的, ...

  8. (转)Java中JSON字符串与java对象的互换实例详解

    在开发过程中,经常需要和别的系统交换数据,数据交换的格式有XML.JSON等,JSON作为一个轻量级的数据格式比xml效率要高,XML需要很多的标签,这无疑占据了网络流量,JSON在这方面则做的很好, ...

  9. CAShapeLayer和贝塞尔曲线配合使用

    前言 CAShapeLayer继承自CALayer,因此,可使用CALayer的所有属性.但是,CAShapeLayer需要和贝塞尔曲线配合使用才有意义. 关于UIBezierPath,请阅读文章:i ...

  10. 【Bitset】 BZOJ4810

    难得学习一下C++的库..[至今连map,vector都没用过的我.. 首先#include<bitset>或<bits/stdc++.h> 定义函数:  { bitset & ...