I’m just posting this because I thought it might be helpful to someone else using Olympe with a physical drone. It’s really hard to read the Olympe logs as currently implemented because they’re filled with messages I don’t care about, but I still want to use DEBUG level logging to find errors.
Continuing the discussion from Change loglevel in Olympe 1.2.1: since the standard Python logging library is now being used, you can use filters to make the output easier to read. Here’s an example. First create a function that returns False when a message is not interesting (because it is spammed to the log).
def is_log_message_interesting(record): # filter out noisy logging msg = record.getMessage() unwanted_messages = ['ardrone3.GPSSettingsState.GeofenceCenterChanged', 'ardrone3.GPSState.NumberOfSatelliteChanged', 'common.CommonState.LinkSignalQuality', 'wifi.rssi_changed', 'ardrone3.PilotingState.HeadingLockedStateChanged', 'common.MavlinkState.MavlinkFilePlayingStateChanged', 'common.FlightPlanState.ComponentStateListChanged', 'common.FlightPlanState.AvailabilityStateChanged', 'follow_me.mode_info'] return not any(m in msg for m in unwanted_messages)
Then connect to a drone and apply the log filter:
drone = olympe.Drone(DRONE_IP) drone.connect() drone.logger.addFilter(is_log_message_interesting)
Now your logs will be less noisy. Obviously you can add/remove strings from
is_log_message_interesting() to suit your definition of interesting, but I found that the messages listed above print so frequently when connected to a physical drone that it’s impossible to read anything else, like my own print() statements in the python console or Olympe log messages with errors in them.