Salak

Salak

  • 文档
  • 中文
    • English
  • GitHub

›基础功能

新手入门

  • 简介
  • 快速入门

基础功能

  • 目录结构
  • 内置对象
  • 配置
  • 中间件
  • 路由
  • Controller
  • Behavior
  • Service
  • 定时任务
  • 扩展
  • 插件
  • 日志
  • 接口文档
  • 启动自定义

进阶介绍

  • 视图
  • 数据库
  • 国际化
  • CURL
  • Loader

扩展功能

  • 多模块项目
  • Typescript

日志

日志在web开发中是必不可少的一部分,对于应用运行状态、问题排查有着很重要的作用。

框架提供的日志功能基于 winston 3。

主要特性

  • 日志分级
  • 统一错误日志,错误日志会打印一份到默认的错误日志中
  • 支持日志切割,可以按年、月、日切割

配置

配置示例:

// common/config/default.js
module.exports = {
  logger: {
    root: '/tmp/logs',
    injectConsole: true,
    removeConsoleAfterServerStart: true,
    formatType: 'log4js',
    fileType: 'file',
    capture: {
      enable: true,
      category: 'http',
      level: 'auto'
    },
    categories: {
      user: {
        transports: [
          'user',
          'error'
        ]
      }
    },
    transports: {
      user: {
        type: 'file',
        filename: 'user/user.log',
        maxsize: 50 * 1024 * 1024, // 50m
        maxFiles: 30
      }
    },
    transportsDefaultOptions: {
      file: {
        maxsize: 50 * 1024 * 1024, // 50m
        maxFiles: 30
      }
    },
    defaultLevel: 'debug'
  }
}

root

string,路径,日志文件存放目录,默认存放在logs下

injectConsole

boolean,是否输出到stdout,默认为true

removeConsoleAfterServerStart

boolean,是否在服务器启动完毕关闭输出到stdout,默认根据当前环境是否为生产环境来判断,即env === 'production'

formatType

string,日志格式类型,log4js | json,默认为log4js

fileType

string,默认日志文件类型,file | dateFile,默认为file

capture

object,http请求日志配置,会详细记录请求来源以及响应结果

  • enable: 是否开启,默认为true
  • category: 采用哪个category来保存请求日志,默认为http
  • level: 日志记录级别,默认为auto,自动根据状态码输出到对应的日志

category

object,日志类别,单日志模式下定义,默认为undefined

  • transports:Array,日志传输类型
  • level:日志记录级别

categories

object,日志类别,在category未定义时生效。

默认设置为:

categories: {
  default: {
    transports: [
      'default',
      'error'
    ]
  },
  app: {
    transports: [
      'app',
      'error'
    ]
  },
  http: {
    transports: [
      'http'
    ]
  }
}
  • key {string} category名称
  • value {object} category属性
  • value.transports {Array<string|Transport>} 日志传输
  • value.level {string} 日志级别

defaultLevel

日志默认级别,有silly,debug,verbose,info,warn,error。默认情况下,开发环境为debug,生产环境为info。

transports

object,日志传输设置

  • key:string,传输类型名称
  • value:object,日志参数
  • value.type:类型,可以为console,file,dateFile

value设置可参考Winston Transport,dateFile

transportsDefaultOptions

object, transport 默认配置,可用于全局设置file/dateFile类型的transport

  • key: string, transport类型,如file,dateFile
  • value: object,transports配置

使用

logger挂载在app实例上,可以直接通过app.logger直接访问。

在Base上,可以通过this.logger访问

app.logger 默认挂载了['silly', 'debug', 'verbose', 'info', 'warn', 'error']这些方法,他们会输出到default category上。

如果需要访问对应category,只需要在app.logger上调用相应的category。

示例如下:

// app
app.logger.error('error!!')
app.logger.user.info('find the user')

// controller
const { Controller } = require('salak')

class Log extends Controller {
  async actionLog () {
    this.logger.info('test')
    this.logger.user.info('user')
  }
}

module.exports = Log
← 插件接口文档 →
  • 主要特性
  • 配置
    • root
    • injectConsole
    • removeConsoleAfterServerStart
    • formatType
    • fileType
    • capture
    • category
    • categories
    • defaultLevel
    • transports
    • transportsDefaultOptions
  • 使用
Salak
Docs
Getting StartedGuides
About
aotu.io
Copyright © 2019 凹凸实验室