import {configure, getLogger} from 'log4js';
import * as os from 'os'

/**
 * Log4js 配置
 */
const log4js = getLogger();
log4js.level = 'debug';
const appName = process.env.KT_APP_NAME || 'debugger'; //从K8S环境变量中获取
const deploymentId = process.env.KT_K8S_DEPLOYMENT || 'deploymentId';
const podId = os.hostname() || 'podId';
const contextId = process.env.KT_CONTEXT || 'contextId';
const logPath = process.env.KT_LOG_PATH || '/opt/app/logs'

configure({
    appenders: {
        console: {
            encoding: "utf-8",
            type: 'stdout',
            layout: {
                type: 'pattern',
                pattern: '%d{yyyy-MM-dd hh:mm:ss.SSS} %p ' + deploymentId + ' ' + podId + ' ' + contextId + ' %m%n'
            }
        },
        everything: {
            type: 'dateFile',
            encoding: "utf-8",
            filename: logPath +'/'+ appName + '.log',
            pattern: '.yyyy-MM-dd',
            layout: {
                type: "pattern",
                pattern: '%d{yyyy-MM-dd hh:mm:ss.SSS} %p ' + deploymentId + ' ' + podId + ' ' + contextId + ' %m%n'
            },
            compress: true
        }
    },
    categories: {
        default: {appenders: ['console', 'everything'], level: 'debug'}
    }
});

export {log4js}

// %r 日志输出时间，以 toLocaleTimeString 函数格式化
// %p 日志等级
// %c 日志分类
// %h 访问计算机的 hostname
// %m 打印的日志主题内容
// %n 换行标识
// %d 日志输出日期 ( 默认以 ISO8601 方式格式化 )
// 可自定义输出类型 %d{yyyy/MM/dd-hh.mm.ss},输出 2018/05/22-15.42.18
// %z 记录进程 pid 号 ( 数据来自 node 方法 process.pid )
// %x{} 输出自定义 tokens 中的项目，例如上述例子中的 user
// %[ 想要输出的内容 %] 用来给被扩起来的内容着色，颜色和日志 level 有关