Anatomy of Logging in Appium

April 01, 2026 · 10 min read · Tool Comparison

HeadSpin Platform
Automated & amp; manual testing do easy through data science insights.
Differentiating capability:
  • Extensive end-to-end automation of QA process
  • Relative analysis of app performance against peers
  • Continuous monitoring of app performance utilise synthetic information for higher availability of apps
  • Easy-to-use developer friendly program
cloudtest go
Affordable Real Device Testing for Emerging Teams
cloudtest go
Affordable Real Device Testing for Digital Enterprises
cloudtest go
The Ultimate Solution for a Powerful Blend of Functional & amp; Performance Testing!
cyol
TEM
New
Centralized mobile test execution in cloud
cyol
Enhance Your Accessibility Testing With HeadSpin
cyol
Automate camera-based testing

‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎

‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎

‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎

‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎

‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎

‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎

retail

‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎

‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎

‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎‎

Anatomy of Logging in AppiumAnatomy of Logging in Appium

Anatomy of Logging in Appium

Published on
March 21, 2018
Updated on
Published on
June 12, 2022
Updated on
 by 
 Jonathan LippsJonathan Lipps
Jonathan Lipps

When the Appium host runs there is oftentimes a bewildering current of logs, afford information about the automation in process, but the details are often obscure.

Server Startup

The first lines of the log announce the version of Appium, and the address it is running on:

Check out:
$ appium [Appium] Welcome to Appium v1.8.0-beta3 (REV 40e40975ebd3593d08c3f83de2546258f7ddf11d) [Appium] Appium REST http interface hearer started on 0.0.0.0:4723

Further, if you have commence the host with anyspecial flags, including default desired capacity they will also be noted hither, to facilitate with see the environs that is being run:

$ appium -- address 172.19.131.113 -- porthole 8000 -- default-capabilities ' {`` showIOSLog '': true} ' [Appium] Welcome to Appium v1.8.0-beta3 (REV 40e40975ebd3593d08c3f83de2546258f7ddf11d) [Appium] Non-default server args: [Appium] address: 172.19.131.113 [Appium] port: 8000 [Appium] defaultCapabilities: {[Appium] showIOSLog: true [Appium]} [Appium] Default capability, which will be added to each request unless overridden by desired capableness: [Appium] showIOSLog: true [Appium] Appium REST http interface listener start on 172.19.131.113:8000

This information is priceless for providing context to the that will be run. In particular, different versions of Appium will have different capability and topic, so knowing what version is running is necessary to begin to make any determination of what is locomote on in any run.

For autonomous testing across multiple user personas, check out SUSATest — it explores your app like 10 different real users.

Session Creation

While session creation involves a complicated regalia of operations to get the environment set up and the application under test run, the beginning of the logs for a command to create the session provides basic information about the session. In particular, thedesired capacity, along with any nonpayment capability are listed. It is often useful to check that what was intended to be request was really received by the Appium server, since it is the capabilities listed hither that will be acted upon for the automation session.

Also check:
[Appium] Creating new XCUITestDriver (v2.68.0) session [Appium] Capabilities: [Appium] app: /Users/isaac/apps/UICatalog-iphonesimulator.app [Appium] platformName: iOS [Appium] platformVersion: 11.3 [Appium] deviceName: iPhone 6 [Appium] automationName: XCUITest [Appium] noReset: true [Appium] maxTypingFrequency: 30 [Appium] clearSystemFiles: true [Appium] showXcodeLog: false [debug] [BaseDriver] [debug] [BaseDriver] Creating session with MJSONWP desired capabilities: {`` app '': '' /Users/isaac/code/a ...

Appium Commands

Appium is aRESTserver, accepting incoming HTTP requests, performing the activity requested, and returning a solvent of some variety. In the Appium server logs, each such incoming request is delineated by a line indicating the request, and a line indicating the response. In between these are the details of the execution of the requested command:

Recommended post:
[HTTP] -- > GET /wd/hub/status {} [debug] [MJSONWP] Calling AppiumDriver.getStatus () with args: [] [debug] [MJSONWP] Responding to customer with driver.getStatus () result: {`` build '': {`` version '': '' 1.8.0-beta3 '', '' revision '': '' 30e7b45bdc5668124af33c41492aa5195fcdf64d ''}} [HTTP]<-- GET /wd/hub/status 200 121 ms - 126

Investigating Errors

On the client-side errors are usually helpful, there is usually more info to be found in the logarithm. Usually, the errors will be at the end of the automation session, but sometimes the session can preserve, and the error logs will be earlier. So, the 1st pace is to identify the bid where the error happened. As we hold already seen, each bid is marked by[HTTP]-- & gt; and [HTTP]& lt; --. Within these markers is the details of the execution of the dictation, including any error output.

Read:

Let & # x27; s take a look at a concrete model:

[HTTP] -- > POST /wd/hub/session[debug] [AndroidDriver] Shutting down Android driver [debug] [AndroidDriver] Called deleteSession but bootstrap was n't fighting [debug] [Logcat] Stopping logcat seizure [debug] [ADB] Getting connect devices ... [debug] [ADB] 1 twist (s) connected [debug] [ADB] Running '/home/user/Android/Sdk/platform-tools//adb ' with args: [`` -P '' ,5037, '' -s '', '' ec8c4df '', '' shell '', '' am '', '' force-stop '', '' io.appium.unlock ''] [debug] [AndroidDriver] Not cleaning yield files. Add ` clearSystemFiles ` capability if wanted. [MJSONWP] Encountered national mistake running command: Error: Can not stop and clear com.company.app. Original error: Error action adbExec. Original fault: 'Command '/home/user/Android/Sdk/platform-tools//adb -P 5037 -s ec8c4df shell pm clear com.company.app ' exited with code 1 '; Stderr: 'Error: java.lang.SecurityException: PID 22126 does not hold permission android.permission.CLEAR_APP_USER_DATA to open data of parcel com.company.app '; Code: ' 1' at Object.wrappedLogger.errorAndThrow (.. / .. /lib/logging.js:63:13) at ADB.callee $ 0 $ 0 $ (.. / .. / .. /lib/tools/adb-commands.js:334:9) at tryCatch (/home/linuxbrew/.linuxbrew/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:67:40) at GeneratorFunctionPrototype.invoke [as _invoke] (/home/linuxbrew/.linuxbrew/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:315:22) at GeneratorFunctionPrototype.prototype. (anonymous function) [as stroke] (/home/linuxbrew/.linuxbrew/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:100:21) at GeneratorFunctionPrototype.invoke (/home/linuxbrew/.linuxbrew/lib/node_modules/appium/node_modules/babel-runtime/regenerator/runtime.js:136:37) atat process._tickCallback (internal/process/next_tick.js:188:7) [HTTP]<-- POST /wd/hub/session 500 40811 ms - 557

In this abridged set of log, the user has attempted to start a session apply the Android driver and has been met with an error. In this suit it looks like the fault occur during Appium & # x27; s attempt to stop and clear the AUT in readying for the session. Here the mistake gives us two important pieces of information:

  1. What Appium was trying to do, specifically
  2. What proceed improper (in the form of error text and any related codes)
Also read:

In this case, Appium was trying to run anadb command (adb shell am force-stop), with argument that have been included in the erroneousness text. And what happened? It was met with an Android system error about permission. At this point, we have everything we need to troubleshoot locally. We can run theadbbidding that Appium attempt to run, for example, and determine whether we can procreate the issue outside of Appium. If so, we can so seek recourse through a helpful Android-specific forum, or from other Appium users who might have run into the same problem. If the command can be run successfully from the command line, then it may be we have uncover a bug in Appium, and it should be describe as aGitHub topic.

(If you & # x27; re rummy, in this case the user was able to reproduce the problem outside of Appium, so it appeared to be related to the specific device manufacturer & # x27; s security model).

Obviously, this is one of many, many examples that could have be given, but it illustrate the nucleus point that, when faced with an error, the logs can assist supply more information that facilitate a local repro endeavor or aid the Appium team understand what could be proceed wrong. No number should ever be subject to the Appium issue tracker without a complete set of logs!

Check:

Server Flags for Changing the Logging Output

While the default logging yield is often enough, and if you are opening anissue on GitHubto get help with a problem, the more info the better, there areserver flagsprovided to change the logging behavior of the Appium waiter.

  • -- log-level- change the level at which Appium logs information. Appium defaults to loggingeverything, which can be a lot. The options for the flag are& # x27; info & # x27;, & # x27; info: debug & # x27;, & # x27; info: information & # x27;, & # x27; information: warn & # x27;, & # x27; info: fault & # x27;, & # x27; warn & # x27;, & # x27; warn: debug & # x27;, & # x27; warn: info & # x27;, & # x27; warn: warn & # x27;, & # x27; warn: error & # x27;, & # x27; error & # x27;, & # x27; error: debug & # x27;, & # x27; error: info & # x27;, & # x27; error: warn & # x27;, & # x27; mistake: mistake & # x27;, & # x27; debug & # x27;, & # x27; debug: debug & # x27;, & # x27; debug: information & # x27;, & # x27; debug: warn & # x27;, & # x27; debug: error & # x27;
  • -- log-no-colors- If your console does not display colouring (this will be evidence as logarithm with odd character sequences likeTODO: observe the colouration) you can turn off colors with this flag
  • -- log-timestamp- Add a timestamp to the beginning of each log line, which is useful in cases where timeouts are occurring. The log lines will appear like
2018-03-15 13:17:58:663 - [Appium] Welcome to Appium v1.8.0-beta3 (REV 30e7b45bdc5668124af33c41492aa5195fcdf64d) 2018-03-15 13:17:58:664 - [Appium] Non-default server args: 2018-03-15 13:17:58:665 - [Appium] logTimestamp: true 2018-03-15 13:17:58:732 - [Appium] Appium REST http interface hearer start on 0.0.0.0:4723
Author & # x27; s Profile

Jonathan Lipps

LinkedIn
Author & # x27; s Profile

Piali Mazumdar

Lead, Content Marketing, HeadSpin Inc.

Piali is a dynamic and results-driven Content Marketing Specialist with 8+ years of experience in craft engaging narratives and market collateral across diverse industries. She excels in collaborating with cross-functional teams to develop innovative substance strategy and deliver compelling, authentic, and impactful content that resonates with quarry audiences and enhances make authenticity.

LinkedIn

Anatomy of Logging in Appium

4 Parts

regression intelligence blog
-

Regression Intelligence virtual guidebook for forward-looking users (Part 3)

Coming Soon
Regression Intelligence practical guide for advanced users
-

Regression Intelligence practical guide for advanced user (Part 4)

Coming Soon

Discover how HeadSpin can authorize your business with superior prove potentiality

Our Platform enables you to:
accelerate time-to-market
Accelerate time-to-market, gaining a competitive edge
faster development cycles
Boost developer/QA productiveness with faster maturation cycles
automated buil-over-build regression testing
Automate build-over-build regression testing for consistent results
gain better visibility into functional & performance issues
Gain better visibility into functional and performance issues
reduce mean time
Reduce mean time to identify/resolve during test, QA, and product
evaluate audio, video & qoe
Evaluate sound, picture, and content quality of experience (QoE) effortlessly
The trusted choice for global enterprises
Adobe
Hargreaves Lansdown
Truecaller
Crazylabs
Nedbank
Numeracle
Veryon
Close

Discover how HeadSpin can empower your business with superior screen capabilities

Our Platform enable you to:
accelerate time-to-market
Accelerate time-to-market, gaining a competitive edge
faster development cycles
Boost developer/QA productivity with faster evolution cycles
automated buil-over-build regression testing
Automate build-over-build regression testing for ordered results
gain better visibility into functional & performance issues
Gain better visibility into functional and performance issues
reduce mean time
Reduce meanspirited clip to identify/resolve during test, QA, and production
evaluate audio, video & qoe
Evaluate sound, picture, and content quality of experience (QoE) effortlessly
The sure alternative for global enterprises
Close

Discover how HeadSpin can empower your business with superior test capabilities

Our Platform enables you to:
accelerate time-to-market
Accelerate time-to-market, gaining a competitive edge
faster development cycles
Boost developer/QA productiveness with quicker ontogeny cycles
automated buil-over-build regression testing
Automate build-over-build regression testing for consistent results
gain better visibility into functional & performance issues
Gain better visibility into functional and performance issue
reduce mean time
Reduce mean time to identify/resolve during trial, QA, and production
evaluate audio, video & qoe
Evaluate audio, video, and content quality of experience (QoE) effortlessly
The trusted selection for global enterprises
Close

Connet Now

Wipro LogoVMLYR Logo
Close
Book a Meeting
Products
footer down arrow
Solutions
footer down arrow
Industries
footer down arrow
Features
footer down arrow
Support
footer down arrow
Resource Center
footer down arrow
Why Choose HeadSpin?
footer down arrow
Copyright © 2026 HeadSpin, Inc. All Rights Reserved.

Automate This With SUSA

Upload your APK or URL. SUSA explores like 10 real users — finds bugs, accessibility violations, and security issues. No scripts needed.

Try SUSA Free

Test Your App Autonomously

Upload your APK or URL. SUSA explores like 10 real users — finds bugs, accessibility violations, and security issues. No scripts.

Try SUSA Free