Jump to content
sxalexander

Alfred 3 Tip: Use stderr to output to the debug console

Recommended Posts

I love Alfred but I struggled at first to troubleshoot my workflow scripts due to difficulty finding a way to debug.  I've seen posts mentioning writing logs to an external file but that seemed hack-y, especially since Alfred includes a debug console.  If you'd like to use the console to debug your scripts, I found the following very useful.  It would be great if there were a mention of this in the docs:

 

To show script output in the debug console, print (or echo or put, etc) the output to stderr instead of stdout.

 

In a Bash script:

>&2 echo "Log this output to the console"

YSlrm25.gif

 

In a Python script:

import sys

sys.stderr.write("Log this to the console")

AxVjlUI.gif

 

For other languages, look for an equivalent method that allows you to log to stderr.

Edited by sxalexander

Share this post


Link to post

If you're going to use sys.stderr.write() in Python, don't forget to add the trailing newline: 

sys.stderr.write('Message\n')

 
For simple scripts, I normally use this log() function: 

# Needed to use print this way
from __future__ import print_function
 
def log(s, *args):
    if args:
        s = s % args
    print(s, file=sys.stderr)
 
# Usage 
log('var1=%r, var2=%r', var1, var2)
Edited by deanishe

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...