anchor.diff:  %% Descrip.: log a log entry
   %% Returns : ok
   %%--------------------------------------------------------------------
  -log(Level, Format) when atom(Level), list(Format) ->
  +log(Level, Format) when is_atom(Level), is_list(Format) ->
       log(Level, Format, []).
   
  -log(Level, Format, Arguments) when atom(Level), list(Format), list(Arguments) ->
  +log(Level, Format, Arguments) when is_atom(Level), is_list(Format), 
  +				   is_list(Arguments) ->
       do_log(Level, Format, Arguments).
   
   %%--------------------------------------------------------------------
  
positive.code: 	    ok;
  	Size ->
  	    %% Set up a timer to do the size checking every 60 seconds
  	    {ok, T} = timer:send_interval(60 * 1000, logger, {check_logfile_size, Size})
      end,
      %% Construct log filenames and open/create them
      DebugFn = lists:concat([Basename, ".debug"]),
      NormalFn = lists:concat([Basename, ".log"]),
      ErrorFn = lists:concat([Basename, ".error"]),
      {ok, DebugIoDevice} = safe_open(DebugFn, [append]),
      {ok, NormalIoDevice} = safe_open(NormalFn, [append]),
      {ok, ErrorIoDevice} = safe_open(ErrorFn, [append]),
      {ok, #state{debug_iodev=DebugIoDevice, debug_fn=DebugFn,
  		normal_iodev=NormalIoDevice, normal_fn=NormalFn,
  		error_iodev=ErrorIoDevice, error_fn=ErrorFn}}.
  
negative.code: %%--------------------------------------------------------------------
  %% Macros
  %%--------------------------------------------------------------------
  %% benchmarking shows no real speed improvement by delayed_write,
  %% just annoyance
  -define(FILE_OPTS, [append, raw, binary]).
  
  %%====================================================================
  %% External functions
  