Appium appium 输入日志过多导致停止运行的问题解决

匿名 · 2019年08月17日 · 最后由 Soner 回复于 2020年04月09日 · 2272 次阅读

所要解决的问题:在使用 appium 桌面版执行活动的时候,log 日志都是输出在对话框中,并存在内存中。如果执行时间过长,输入的日志过多,就会出现内存不足的情况,appium 就会停止运行。
解决的方案:更改 APPIUM 的源码的中 logger.js 文件中对于日志输出的处理,不在桌面窗口中输出日志,就可以避免内存不足导致停止运行的情况了。
修改步骤:
1.找到 logger.js 并打开
文件位置在:自己的安装路径\node_modules\appium\lib\server 下文件名为 logger.js
2.找到文件中下面一段代码:
var msg = logObj.message && logObj.prefix ?
(logObj.prefix + ": " + logObj.message) :
(logObj.prefix || logObj.message);

这部分的意思就说获取需要输入日志的消息体,将此处的代码屏蔽后新增一条
var msg = " "

3.更改 _createConsoleTransport下的, level: logLvl:
, level:logLvl更改为, level:"error"

这一部分是实现 log 信息传输到控制台的方法
4.找到如下的代码:
if (levels[logger.transports.console.level] === levels.debug) {
logger.debug = function (msg) {
logger.info('[debug] ' + msg);
}
}

logger.info('[debug] ' + msg);屏蔽掉即可

这一部分是实现将 debug 的信息转化为 info 等级的 log 日志。

完成上面的操作保存文件,这个时候通过 appium 客户端运行代码的时候就不会在控制台上输入日志了。

欢迎各位加入群聊:547349021,虽然名字叫 selenium,但是我们不限于任何关于测试提升的话题讨论。

共收到 15 条回复 时间 点赞

可以直接通过命令指定的 --log-level

匿名 #3 · 2019年08月17日
arrow 回复

通过桌面版启动的

匿名 在 appium 的运行日志怎么关掉? 中提及了此贴 08月17日 18:03

控制台看不了日志的话,报错的话不就看不了信息了么...

匿名 #6 · 2019年08月19日
董延京 回复

可以把日志存到文件中去,另外我一般会自己写一些 log,appium 控制台的 log 多数对我来说没用。运行时间过长,log 日志过多就会导致停止运行

能问下是怎么存的吗,或者我加你的 QQ 吧,要不沟通太麻烦了😁

为啥我的 logger.js 文件内容跟你的不一样

匿名 #9 · 2019年08月20日
snowLiang 回复

可以贴出来看一下,哪个位置不同

匿名 #10 · 2019年08月20日
董延京 回复

在 APPIUM 的客户端可以设置 log 的储存路径,设置按钮下面,logging 模块里有个 log to file。放上你的要储存的路径和文件名就可以了,txt 文件就可以


是这个吗,启动 app,log 没写在文件里呢,是不是得先更改 logger 文件才行

匿名 #12 · 2019年08月22日
董延京 回复

不需要更改 logger,应该是你路径的问题,你可以试一下把 '/' 换成'\' 试一下

不行呢,txt、docx 都试了,运行 app 之后,log 没有写入到文件中去😭


这个 QQ 群加不上额....

匿名 #15 · 2019年08月31日
董延京 回复

现在可以了

命令行 "cd C:\Program Files (x86)\Appium\ && start node node_modules\appium\lib\server\main.js --address 127.0.0.1 --port " + port13 + " -bp " + port14+"
--log-level warn:error --log-timestamp --local-timezone "

董延京 回复

请问,你已经可以把日志输出到指定路径了吗

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册