def worklog(columns=None, bullet='  * ', stdout=Ellipsis, stderr=Ellipsis, verbose=False):
    '''
    worklog() yields a worklog object using sys.stdout and sys.stderr as the outputs.
    worklog(n) yields a worklog that formats output to n columns.

    The following options may be give:
      * bullet (default: '  * ') the bullet-text to print for each bullet.
      * stdout (default: Ellipsis) the file to use in place of stdout; if None, no stdout is
        printed; if Ellipsis, then is set to sys.stdout if verbose is True and None otherwise.
      * stderr (default: Ellipsis) the file to use in place of stderr; if None, no stderr is
        printed; if Ellipsis, then is set to sys.stderr.
      * verbose (default: False) specifies whether to use verbose output. This only has an effect
        if the stdout option is Ellipsis.
    '''
    if columns is None:
        try: columns = int(os.environ['COLUMNS'])
        except: columns = 80
    if stdout is Ellipsis:
        if verbose: stdout = sys.stdout
        else: stdout = None
    return WorkLog(columns=columns, bullet=bullet, stdout=stdout, stderr=stderr)