// 引入log4js模块，它是一个用于在Node.js应用中进行日志记录的常用库，能够方便地实现不同级别的日志输出以及日志的格式化、存储等功能
var log4js = require('log4js');

// 使用log4js的configure方法进行日志配置，配置项以对象形式传入
log4js.configure({
    // 配置日志的输出目标（appenders），这里定义了一个名为'cheese'的输出配置
    appenders: {
        // 'type'指定了输出类型为'file'，即输出到文件
        // 'filename'指定了输出的文件名是'cheese.log'，意味着日志信息将会被记录到该文件中
        cheese: { type: 'file', filename: 'cheese.log' }
    },
    // 配置日志的分类（categories），用于将不同的日志记录器划分到不同的类别，并指定每个类别的相关属性
    categories: {
        // 'default'表示默认的日志类别
        default: {
            // 'appenders'数组指定了该类别使用的日志输出目标，这里只使用了前面定义的'cheese'输出目标
            appenders: ['cheese'],
            // 'level'指定了该类别日志记录的级别，这里设置为'error'，表示只有错误级别及以上的日志才会被记录到对应的输出目标中
            level: 'error'
        }
    }
});

// 将一个名为'logger'的函数作为模块的属性导出，用于获取日志记录器实例
exports.logger = function (level) {
    // 通过log4js的getLogger方法获取名为'cheese'的日志记录器实例，后续可以使用这个实例来记录相应的日志信息
    var logger = log4js.getLogger("cheese");
    // 设置该日志记录器的日志级别为'debug'，这意味着从调试级别（最低级别）开始的所有日志都会被记录，覆盖了之前配置中'default'类别里设置的'error'级别（此处修改可能根据实际需求而定）
    logger.level = 'debug';
    // 返回配置好的日志记录器实例，外部模块可以调用该函数获取实例后进行日志记录操作
    return logger;
};

// 以下是一段被注释掉的代码，从函数名和使用方式来看，它原本是用于配合Express框架使用的方法，用于在Express应用中集成log4js日志记录功能
// exports.use = function (app, level) {
//     // 在Express应用中使用log4js的connectLogger中间件来记录请求相关的日志信息
//     // 首先通过log4js的getLogger方法获取名为'logInfo'的日志记录器实例（这里假设'logInfo'是之前定义好的某个日志记录器名称，实际可能需要准确配置）
//     app.use(log4js.connectLogger(log4js.getLogger('logInfo'), {
//         // 设置日志记录的级别，它会尝试从传入的'level'参数获取对应级别，如果没有则使用默认的'debug'级别（这里的'levels'变量未在提供的代码中定义，可能是一个定义了不同日志级别映射关系的对象，实际应用中需要准确处理）
//         level: levels[level] || levels['debug'],
//         // 定义日志记录的格式，这里使用了简单的格式字符串，指定记录请求的方法、URL以及响应状态等信息，方便后续查看请求相关的日志详情
//         format: ':method :url :status'
//     }));
// };