anchor.diff:                      writeToFile level template args
               with
                   | _ -> () // Do nothing
  +
  +    let inline private writeBothIfConfigured (out: OutputChannel option)
  +              (chanMinLevel: Level)
  +              (consoleMinLevel: Level option)
  +              (level: Level)
  +              (source: string option)
  +              (template: string)
  +              (args: obj[]) =
  +        if consoleMinLevel.IsSome && level.isGreaterOrEqualTo(consoleMinLevel.Value) then
  +            writeDevToolsConsole level source template args
  +
  +        writeOutputChannelIfConfigured out chanMinLevel level source template args
   
       /// The templates may use node util.format placeholders: %s, %d, %j, %%
       /// https://nodejs.org/api/util.html#util_util_format_format
  
positive.code:         else
              ionideLogsMemory <- ionideLogsMemory @ [formattedLogLine]
  
      let private writeBothIfConfigured (out: OutputChannel option)
                (chanMinLevel: Level)
                (consoleMinLevel: Level option)
                (level: Level)
                (source: string option)
                (template: string)
                (args: obj[]) =
          if consoleMinLevel.IsSome && level.isGreaterOrEqualTo(consoleMinLevel.Value) then
              writeDevToolsConsole level source template args
  
          if out.IsSome && level.isGreaterOrEqualTo(chanMinLevel) then
              writeOutputChannel out.Value level source template args
  
  
negative.code: 
      let getIonideLogs () = ionideLogsMemory |> String.concat "\n"
  
      [<Emit("console[$0]($1...)")>]
      let private consoleLog (_level: string, [<ParamListAttribute>] _args: obj list): unit = failwith "JS only"
  
      let getConsoleLogArgs (level: Level) (source: string option) (template: string) (args: obj[]) =
          // just replace %j (Util.format->JSON specifier --> console->OBJECT %O specifier)
          // the other % specifiers are basically the same
          let browserLogTemplate = String.Format("[{0}] {1}", source.ToString(), template.Replace("%j", "%O"))
          let nameOnConsoleObject =
              match level with
              | DEBUG -> "debug"
              | INFO -> "info"
              | WARN -> "warn"
              | ERROR -> "error"
          let argList = args |> List.ofArray
          nameOnConsoleObject, (List.append [ box browserLogTemplate ] argList)
  
      let inline private writeDevToolsConsole (level: Level) (source: string option) (template: string) (args: obj[]) =
          let nameOnConsoleObject, logArgs = getConsoleLogArgs level source template args
          consoleLog(nameOnConsoleObject, logArgs)
  
      let private writeOutputChannel (out: OutputChannel) level source template args =
          let formattedMessage = Util.format(template, args)
  