在全新的 Angular 12 应用程序中运行单元测试时,我收到以下弃用警告:
(node:14940) [log4js-node-DEP0004] DeprecationWarning:模式 %d{DATE} 已被弃用,因为它在使用时会引起混乱。请改用 %d{DATETIME}。
why log4js提示"karma" depends on it。警告本身很清楚应该做什么,但缺少两个关键信息:
karma并用新语法替换已弃用的语法之外 - 我绝对不会这样做)。降级log4js到早期版本,不会输出警告,使用forceResolutions似乎不是一个好主意,特别是因为我发现了一些与其中的漏洞相关的github线程,尽管业力似乎没有受到影响。
问题:是否有可行的途径可以避免收到警告,或者“现在我们等待”(更新karma)是唯一的选择?
注意:我也在karma 的 repo上询问过。
unit-testing karma-runner karma-jasmine log4js-node angular-cli
正如标题所说。在网上寻找明确的答案,但在任何地方都找不到答案,因为大多数都只是链接到 Log4J。
我的代码是:
log4js.loadAppender('file');
log4js.addAppender(log4js.appenders.file('logs/cheese.log'), 'cheese');
logger.setLevel('DEBUG');
logger.trace('Entering cheese testing');
logger.debug('Got cheese.');
logger.info('Cheese is Gouda.');
logger.warn('Cheese is quite smelly.');
logger.error('Cheese is too ripe!');
logger.fatal('Cheese was breeding ground for listeria.');
Run Code Online (Sandbox Code Playgroud)
它正在创建一个名为'cheese'的文件,但其中没有任何内容.如何写内容呢?
我刚刚在Node.js应用程序中使用Log4js启用了日志记录.我使用了https://github.com/nomiddlename/log4js-node中的配置选项,它运行正常.
它将日志写入日志文件以及控制台中.我不希望在控制台中打印它. 无法弄清楚如何配置它.非常抱歉问这个愚蠢的问题.
目前我需要在我的测试用例中添加log4js支持,如下所示:
it(' QuestionController saveQuestion method Testing ', inject(function(localStorageService) {
***var log4js = require('log4js');
var logger = log4js.getLogger();
logger.debug("Some debug messages");***
expect({}).toEqual(localStorageService.get('questionInfoStorage'));
}));
Run Code Online (Sandbox Code Playgroud)
我试图在karma.conf.js文件中包含log4js js和repire js文件,它不起作用并给出一些错误,如"模块名称"事件"尚未加载上下文"的东西.
以前是否有人提出同样的问题?谢谢提前!
我正在尝试以 JSON 格式获取 log4js 的输出,以便我可以轻松跟踪它。有什么方法可以在 configuration.json 中设置,以便 log4js 生成的输出采用 JSON 格式?
目前我正在使用以下配置。
{
"appenders": [
{
"category": "XXXXX",
"type": "dateFile",
"filename": "XXXXXXXX",
"pattern": "-from-MM-dd",
"layout": {
"type": "messagePassThrough"
}
},
{
"category": "XXXXXXXXX",
"type": "dateFile",
"filename": "XXXXXXXX",
"pattern": "-from-MM-dd",
"layout": {
"type": "messagePassThrough"
}
}
],
"levels": {
"XXXXConfig": "INFO",
"XXXXXjectConfig" : "INFO"
}
}
Run Code Online (Sandbox Code Playgroud)
我得到的输出格式如下:
DEBUG: 1458562784032 : 2016-03-21T12:19:44.4444+00:00 : Data in request: : {
"action": "XXXXXXX",
"user": {
"username": "XXXX",
"id" : XXXX,
"pos" : XXXX
},
"version": …Run Code Online (Sandbox Code Playgroud) 我有一个nodejs项目,使用log4js来写日志。我想在开始新日期时创建新的文件日志。
示例:
daily.2017_07_31.log
daily.2017_08_01.log
daily.2017_08_02.log
daily.2017_08_03.log
在java中,我知道配置log4j,但在带有log4js的nodejs中我不知道。感谢大家的帮助:)
我想将日志写入不同的文件。
const log4js = require('log4js');
log4js.configure({
appenders: { integra: { type: 'file', filename: './logs/doc.log' } },
categories: { default: { appenders: ['doc'], level: 'error' } }
});
const logger = log4js.getLogger('doc');
module.exports = logger
Run Code Online (Sandbox Code Playgroud)
按照上面的代码,我只能配置一次日志。但是我想为每个日志动态地写一个日志文件。在上述情况下,我只能写一个文件。我需要一种可以写入新日志文件的方法。我想在不同的路径下写入多个日志文件。
我正在使用node-log4js.(这是log4JS,而不是log4J!)我认为记录器的"类别"就像你把Log4中的字符串放入记录器的构造函数中一样(通常你把你的fqn类名放在那里),这样log4j可以把记录的东西放进去到正确的位置.
我得到了以下配置:
{
"appenders": [
{
"type": "console",
},
{
"type": "file",
"absolute": true,
"filename": "/tmp/app.log",
"maxLogSize": 20480,
"backups": 10
},
{
"type": "console",
"category": "app.access"
}
]
}
Run Code Online (Sandbox Code Playgroud)
期望的行为是所有"app.access"内容只会转到最后一个appender(现在也是控制台,但是将来可能会改变).目前,具有"app.access"类别的所有记录将被记录两次到控制台,一次记录到文件.
有没有办法给那些其他两个appender一个"除app.access"以外的所有类别?怎么样?
非常感谢你提前
我正在尝试创建一个记录器配置,它仅将“错误”级别信息记录到控制台,将“调试”级别信息记录到文件附加程序。任何人都可以帮助如何使用上述配置创建记录器?
提前致谢。非常感谢帮助
我需要一个 NodeJS 应用程序的基本日志系统,所以我正在用 做一些测试log4js,这似乎是这些情况的标准。我需要将消息打印到控制台和文件,因此我编写了以下代码:
// Logger
var log4js = require('log4js');
log4js.configure({
appenders: {
'console': { type: 'console' },
'file': { type: 'file', filename: 'logs/mailer.log' }
},
categories: {
default: { appenders: ['file', 'console'], level: 'DEBUG' },
}
});
var logger = log4js.getLogger("Mailer");
logger.info("Starting application");
try {
// CODE TO READ APP CONFIG FILE
}
catch(e) {
logger.error("Couldn't read app configuration file (config.yml)");
// This is the trouble maker. It kills the app without flushing the logs
process.exit(1);
} …Run Code Online (Sandbox Code Playgroud) 我想记录控制台日志,无论是预期失败还是进入日志文件的任何异常。我怎么能不使用 try 和 catch 来做到这一点。在 LOG4j for java 中有 rootlogger,它会自动将所有系统信息日志记录到文件中。可以为 javascript 的 log4JS 做同样的事情
log4js.configure({
appenders: [
{
type: "clustered",
appenders: [
{
type: "dateFile",
filename: "log/access.log",
pattern: "-yyyy-MM-dd",
category: "http"
},
{
type: "file",
filename: "log/app.log",
maxLogSize: 10485760,
numBackups: 3
},
{
type: "logLevelFilter",
level: "ERROR",
appender: {
type: "file",
filename: "log/errors.log"
}
}
]
}
]
})
Run Code Online (Sandbox Code Playgroud) 我想知道是否有人碰巧使用Log4js有一些经验?看来它的正常ConsoleAppender在添加到logger对象后并不总是可以立即使用...如果我在文档中有两个顺序脚本标记,如:
//Initialize logger
<script type="text/javascript">
var logger = new Log4js.getLogger("JSLOG");
logger.addAppender(new Log4js.ConsoleAppender(logger, false));
logger.setLevel(Log4js.Level.INFO);
</script>
//Use logger
<script type="text/javascript">
logger.info('Test test');
</script>
Run Code Online (Sandbox Code Playgroud)
...它会导致控制台弹出窗口(弹出窗口)出现,并在页面加载时显示错误消息:
12:58:23 PM WARN Log4js - Could not run the listener function () {
return fn.apply(object, arguments);
}.
TypeError: this.outputElement is null
Run Code Online (Sandbox Code Playgroud)
控制台仍然是初始化的,之后它就在那里,但是对于第一个记录器调用它似乎并不完全存在.如果我使第一个记录器调用setTimeout("logger.info('test test')",1000),它没有错误.所以它就像它没有立即准备好.任何人以前都会看到这个或知道解决方法可能是什么?
干杯
log4js-node ×13
node.js ×8
javascript ×5
logging ×5
karma-runner ×2
log4j ×2
angular-cli ×1
express ×1
npm ×1
protractor ×1
typescript ×1
unit-testing ×1
winston ×1