すべてのログにプレフィックスを追加したかったのですが、私はXCGLogger
をサブクラス化して、logln(...)
またはdebug(...)
機能を上書きしようとしました。XCGLoggerですべてのログをプレフィックスにする方法
しかし、コンパイラは常に(写真参照)私にエラーを与えるこの
- を使用しながら、私は2つの困難に直面しています。
- パラメータがクロージャであるため、特定のログメッセージをカスタマイズする方法がわかりません。
私が見つけたおかげ
すべてのログにプレフィックスを追加したかったのですが、私はXCGLogger
をサブクラス化して、logln(...)
またはdebug(...)
機能を上書きしようとしました。XCGLoggerですべてのログをプレフィックスにする方法
しかし、コンパイラは常に(写真参照)私にエラーを与えるこの
私が見つけたおかげ
[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)
あなたは上記のコードの中で持っている問題は、あなたがのコンパイラに明確されていないということですsuper.logln
メソッドを呼び出します。メソッドの複数のバージョンがあり、さまざまな機能があり、そのうちのいくつかはデフォルトを持っていますので、呼び出すバージョンをコンパイラが知るための十分なパラメータを明示的に含める必要があります。そのため、エラーメッセージに「あいまい」と表示されるのはなぜですか?
ここに機能要求を追加してください:https://github.com/DaveWoodCom/XCGLogger/issuesこれを追加します。とにかく追加したかったことですが、優先順位のリストが低いです。 –