If you look at my serviced service unit, both stdout and stderr are being sent to a file. I restarted appdaemon to capture the startup messages fresh. Hereās the result:
2018-01-29 02:34:51.339020 INFO AppDaemon Version 2.1.12 starting
2018-01-29 02:34:51.339590 INFO Configuration read from: /home/hass/.homeassistant/appdaemon.yaml
2018-01-29 02:34:51.340022 DEBUG AppDaemon Section: {'api_key': 'xxxxxxxx', 'api_port': 5000, 'disable_apps': 0, 'threads': 10, 'logfile': 'STDOUT', 'logsize': 100000, 'errorfile': 'STDERR', 'app_dir': '/home/hass/.homeassistant/apps', 'log_generations': 3}
2018-01-29 02:34:51.340403 DEBUG Hass Section: {'ha_url': 'http://localhost:8123'}
2018-01-29 02:34:51.340710 DEBUG HADashboard Section: None
2018-01-29 02:34:51.341000 DEBUG Calling HA for config with key: and url: http://localhost:8123
2018-01-29 02:34:51.341339 DEBUG get_ha_config()
2018-01-29 02:34:51.341719 DEBUG get_ha_config: url is http://localhost:8123/api/config
2018-01-29 02:34:51.371565 DEBUG Success
2018-01-29 02:34:51.372099 DEBUG {'latitude': 32.551841, 'whitelist_external_dirs': ['/home/hass/.homeassistant/www'], 'elevation': 243, 'longitude': -84.817888, 'components': ['group', 'config.script', 'sensor', 'zwave', 'media_player', 'media_player.pandora', 'zone', 'config.group', 'config.core', 'media_player.vlc', 'sensor.yr', 'alarm_control_panel.alarmdotcom', 'sensor.speedtest', 'lock.zwave', 'switch', 'media_player.cast', 'sensor.dnsip', 'device_tracker', 'conversation', 'alarm_control_panel', 'http', 'vacuum.roomba', 'logbook', 'person', 'config', 'updater', 'websocket_api', 'sensor.zwave', 'config.customize', 'sensor.template', 'automation', 'ffmpeg', 'map', 'tts', 'mqtt', 'config.automation', 'frontend', 'media_player.plex', 'sensor.plex', 'switch.zwave', 'config.zwave', 'api', 'notify', 'vacuum', 'history', 'recorder', 'logger', 'discovery', 'lock', 'sun', 'system_log', 'media_player.roku'], 'config_dir': '/home/hass/.homeassistant', 'version': '0.62.0', 'unit_system': {'volume': 'gal', 'temperature': 'Ā°F', 'mass': 'lb', 'length': 'mi'}, 'time_zone': 'America/New_York', 'location_name': 'Home'}
2018-01-28 21:34:51.480042 INFO Starting Apps
2018-01-28 21:34:51.480698 DEBUG Entering run()
2018-01-28 21:34:51.552072 DEBUG Creating worker threads ...
2018-01-28 21:34:51.556254 DEBUG Done
2018-01-28 21:34:51.556733 DEBUG Calling HA for initial state with key: and url: http://localhost:8123
2018-01-28 21:34:51.557108 DEBUG Refreshing HA state
2018-01-28 21:34:51.557472 DEBUG get_ha_state: url is http://localhost:8123/api/states
2018-01-28 21:34:51.589327 INFO Got initial state
2018-01-28 21:34:51.590108 DEBUG Reading Apps
2018-01-28 21:34:51.591241 INFO Loading Module: /home/hass/.homeassistant/apps/adaptive_switches.py
2018-01-28 21:34:51.601588 INFO Loading Module: /home/hass/.homeassistant/apps/algo_switch.py
2018-01-28 21:34:51.603476 INFO App initialization complete
2018-01-28 21:34:51.603942 DEBUG Starting timer loop
2018-01-28 21:34:51.604668 INFO Dashboards are disabled
2018-01-28 21:34:51.605118 INFO Starting API
2018-01-28 21:34:51.608062 DEBUG Start Loop
2018-01-28 21:34:51.620910 INFO Connected to Home Assistant 0.62.0
2018-01-28 21:34:52.013409 DEBUG Main loop compute time: 11.0ms
2018-01-28 21:34:53.013378 DEBUG Main loop compute time: 10.0ms
2018-01-28 21:34:54.010364 DEBUG Main loop compute time: 8.0ms
2018-01-28 21:34:55.013580 DEBUG Main loop compute time: 10.0ms
As you can see, it recognizes the modules in the apps folder, but nowhere in there do you see the output from the āinitializeā method.