zoukankan      html  css  js  c++  java
  • Appium中的logger

    原文地址http://blog.csdn.net/itfootball/article/details/45395901

    appium中的log输出量很大,我们分析问题的时候会依赖于这些log,但是你理解这些log输出一些标志么?你是否觉得它的输出晦涩难懂了?想不想改成自己的大名?那就看下面的文章吧。

    log形式

    首先我们来看一段log输出:

    info: Starting App
    info: [debug] Attempting to kill all 'uiautomator' processes
    info: [debug] Getting all processes with 'uiautomator'
    info: [debug] executing cmd: /Users/wuxian/Documents/tools/sdk/platform-tools/adb -s emulator-5554 shell "ps 'uiautomator'"
    info: [debug] No matching processes found
    info: [debug] Running bootstrap
    info: [debug] spawning: /Users/wuxian/Documents/tools/sdk/platform-tools/adb -s emulator-5554 shell uiautomator runtest AppiumBootstrap.jar -c io.appium.android.bootstrap.Bootstrap -e pkg com.example.android.apis -e disableAndroidWatchers false
    info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: numtests=1
    info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: stream=
    info: [debug] [UIAUTOMATOR STDOUT] io.appium.android.bootstrap.Bootstrap:
    info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner
    info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: test=testRunServer
    info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: class="io".appium.android.bootstrap.Bootstrap
    info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: current=1
    info: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS_CODE: 1
    info: [debug] [BOOTSTRAP] [debug] Socket opened on port 4724
    info: [debug] [BOOTSTRAP] [debug] Appium Socket Server Ready
    

    我将上面的log分为4种(message为消息体) 
    1. log等级:message 
    2. log等级:[debug] message 
    3. log等级:[debug] [BOOTSTRAP] [debug] message 
    4. log等级:[debug] [UIAUTOMATOR STDOUT] message

    1.log等级:message

    这一类log就是简单的appium服务器的log,切log等级为非debug

    2.log等级:[debug] message

    这一类log和上面是一样的,都是appium服务器的log,区别在于该log等级为debug,在logger.js模块中我们可以看到如下代码,下面的代码将debug等级的log,更改为info等级,然后在后面跟上[debug]的标志。

    if (levels[logger.transports.console.level] === levels.debug) {
        logger.debug = function (msg) { logger.info('[debug] ' + msg); };
      }

    3.[debug] [BOOTSTRAP] [debug] message

    这一类log为手机中的socket服务器包(放在android手机端的jar包称为bootstrap)返回的输出

    4.log等级:[debug] [UIAUTOMATOR STDOUT] message

    这一类log为执行case输出的log,我们可以理解为adb接受的log。我们一般执行uiautomator的case时候,控制台输出的就是这类带有uiautomator标识的log。

    自定义log部分

    log等级

    第一步我们来修改log等级。比如我们想将info级别改为warn级别,只需要将logger.js的223行左右的如下代码

    if (levels[logger.transports.console.level] === levels.debug) {
        logger.debug = function (msg) { logger.info('[debug] ' + msg); };
      }

    修改为 
    这里写图片描述

    这里就将debug等级的修改为了warn模式的,info模式还是info模式(我之前说过,你应该知道为什么改变的是debug而不是info等级吧?)。我们来看看输出:

    info: Starting App
    warn: [debug] Attempting to kill all 'uiautomator' processes
    warn: [debug] Getting all processes with 'uiautomator'
    warn: [debug] executing cmd: /Users/wuxian/Documents/tools/sdk/platform-tools/adb -s emulator-5554 shell "ps 'uiautomator'"
    warn: [debug] No matching processes found
    warn: [debug] Running bootstrap
    warn: [debug] spawning: /Users/wuxian/Documents/tools/sdk/platform-tools/adb -s emulator-5554 shell uiautomator runtest AppiumBootstrap.jar -c io.appium.android.bootstrap.Bootstrap -e pkg com.example.android.apis -e disableAndroidWatchers false
    warn: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: numtests=1
    warn: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: stream=
    warn: [debug] [UIAUTOMATOR STDOUT] io.appium.android.bootstrap.Bootstrap:
    warn: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner
    warn: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: test=testRunServer
    warn: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: class="io".appium.android.bootstrap.Bootstrap
    warn: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: current=1
    warn: [debug] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS_CODE: 1
    warn: [debug] [BOOTSTRAP] [debug] Socket opened on port 4724
    warn: [debug] [BOOTSTRAP] [debug] Appium Socket Server Ready
    

    我们将info改变成了warn,但是还是存在info标志的,因为上面代码的改变是建立在你调用的logger.debug,因为我们之前说过了,appium会将debug等级改为info,然后在后面加一个[debug]标志,现在我们改为warn,那么之前debug会改为warn,然后加一个[debug]标志。所以凡是warn后面必然会跟一个[debug]。

    debug标识

    上面的debug,会在info/warn/error标识后面加一个[debug],是不是很丑,我是觉得很丑,我们将其改变一下改成[TesterHome],还是刚才的代码:

    这里写图片描述

    info: Starting App
    warn: [TesterHome] Attempting to kill all 'uiautomator' processes
    warn: [TesterHome] Getting all processes with 'uiautomator'
    warn: [TesterHome] executing cmd: /Users/wuxian/Documents/tools/sdk/platform-tools/adb -s emulator-5554 shell "ps 'uiautomator'"
    warn: [TesterHome] No matching processes found
    warn: [TesterHome] Running bootstrap
    warn: [TesterHome] spawning: /Users/wuxian/Documents/tools/sdk/platform-tools/adb -s emulator-5554 shell uiautomator runtest AppiumBootstrap.jar -c io.appium.android.bootstrap.Bootstrap -e pkg com.example.android.apis -e disableAndroidWatchers false
    warn: [TesterHome] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: numtests=1
    warn: [TesterHome] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: stream=
    warn: [TesterHome] [UIAUTOMATOR STDOUT] io.appium.android.bootstrap.Bootstrap:
    warn: [TesterHome] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner
    warn: [TesterHome] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: test=testRunServer
    warn: [TesterHome] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: class="io".appium.android.bootstrap.Bootstrap
    warn: [TesterHome] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS: current=1
    warn: [TesterHome] [UIAUTOMATOR STDOUT] INSTRUMENTATION_STATUS_CODE: 1
    warn: [TesterHome] [BOOTSTRAP] [debug] Socket opened on port 4724
    warn: [TesterHome] [BOOTSTRAP] [debug] Appium Socket Server Ready

    ok了。

    觉得UIAUTOMATOR STDOUT和BOOTSTRAP不理解?

    没关系,写成中文,在devices/android/uiautomator.js文件中,找到190和203行左右的语句,将上面两个标识符修改为中文: 
    修改前: 
    这里写图片描述
    修改后: 
    这里写图片描述

    输出:

    info: Starting App
    warn: [TesterHome] Attempting to kill all 'uiautomator' processes
    warn: [TesterHome] Getting all processes with 'uiautomator'
    warn: [TesterHome] executing cmd: /Users/wuxian/Documents/tools/sdk/platform-tools/adb -s emulator-5554 shell "ps 'uiautomator'"
    warn: [TesterHome] No matching processes found
    warn: [TesterHome] Running bootstrap
    warn: [TesterHome] spawning: /Users/wuxian/Documents/tools/sdk/platform-tools/adb -s emulator-5554 shell uiautomator runtest AppiumBootstrap.jar -c io.appium.android.bootstrap.Bootstrap -e pkg com.example.android.apis -e disableAndroidWatchers false
    warn: [TesterHome] [脚本输出] INSTRUMENTATION_STATUS: numtests=1
    warn: [TesterHome] [脚本输出] INSTRUMENTATION_STATUS: stream=
    warn: [TesterHome] [脚本输出] io.appium.android.bootstrap.Bootstrap:
    warn: [TesterHome] [脚本输出] INSTRUMENTATION_STATUS: id=UiAutomatorTestRunner
    warn: [TesterHome] [脚本输出] INSTRUMENTATION_STATUS: test=testRunServer
    warn: [TesterHome] [脚本输出] INSTRUMENTATION_STATUS: class="io".appium.android.bootstrap.Bootstrap
    warn: [TesterHome] [脚本输出] INSTRUMENTATION_STATUS: current=1
    warn: [TesterHome] [脚本输出] INSTRUMENTATION_STATUS_CODE: 1
    warn: [TesterHome] [设备socket服务器输出] [debug] Socket opened on port 4724
    warn: [TesterHome] [设备socket服务器输出] [debug] Appium Socket Server Ready
    

    哦了,就毁到这里吧。

  • 相关阅读:
    MVC模式-----struts2框架(2)
    MVC模式-----struts2框架
    html的<h>标签
    jsp脚本元素
    LeetCode "Paint House"
    LeetCode "Longest Substring with At Most Two Distinct Characters"
    LeetCode "Graph Valid Tree"
    LeetCode "Shortest Word Distance"
    LeetCode "Verify Preorder Sequence in Binary Search Tree"
    LeetCode "Binary Tree Upside Down"
  • 原文地址:https://www.cnblogs.com/111testing/p/7841331.html
Copyright © 2011-2022 走看看