2016-09-19 13 views
0

すべてのログにプレフィックスを追加したかったのですが、私はXCGLoggerをサブクラス化して、logln(...)またはdebug(...)機能を上書きしようとしました。XCGLoggerですべてのログをプレフィックスにする方法

しかし、コンパイラは常に(写真参照)私にエラーを与えるこの

  1. を使用しながら、私は2つの困難に直面しています。
  2. パラメータがクロージャであるため、特定のログメッセージをカスタマイズする方法がわかりません。

enter image description here

私が見つけたおかげ

+0

ここに機能要求を追加してください:https://github.com/DaveWoodCom/XCGLogger/issuesこれを追加します。とにかく追加したかったことですが、優先順位のリストが低いです。 –

答えて

0

[OK]をクリックします。我々は、LogFormatterProtocolに適合するclassまたはstructを定義し、inoutメッセージを変更するためにformat(logDetails: inout LogDetails, message: inout String) -> String関数を実装する必要があります。そして、そのクラスまたは構造体のインスタンスを作成し、宛先フォーマッタ配列に追加します。

let consoleDest = ConsoleDestination(owner: myLogger, identifier: "") // myLogger is an instance of XCGLogger 
consoleDest.formatters = [MyFormatter()] // MyFormatter is a struct conforming to LogFormatterProtocol 
myLogger.add(destination: consoleDest) 
0

あなたは上記のコードの中で持っている問題は、あなたがのコンパイラに明確されていないということですsuper.loglnメソッドを呼び出します。メソッドの複数のバージョンがあり、さまざまな機能があり、そのうちのいくつかはデフォルトを持っていますので、呼び出すバージョンをコンパイラが知るための十分なパラメータを明示的に含める必要があります。そのため、エラーメッセージに「あいまい」と表示されるのはなぜですか?

関連する問題