AS 1.1 Preview 2の更新以降、すべてのLog
メッセージの下に赤い線が表示されます
Log.d(TAG, "message");
メッセージあり: "ロギングタグは最大23文字です。。
Android Studio自体。これはバグですか?
いいえ、それはバグではありません。
1.1プレビュー2でのAndroid Studioの最近の変更 から
値を解決できる場合、ロギングコールに渡されるタグが最大で23文字の長さであることを確認します(ロギングAPIで必要)。
最近の変更で簡単に説明したように、これは Log
APIが23文字を超えるタグを許可しないためです。
SLF4J Android に説明があります:
[...]そのようなタグの長さは現在23文字に制限されています(23 = 32-名前空間プレフィックスの場合8-Cターミネーターの場合1)
Androidのソースコード と一致します。
現在、この例外を明示的に言及している関数は Log.isLoggable()
のみです。
...
スロー
IllegalArgumentExceptionは、tag.length()> 23の場合にスローされます。
ただし、コメントに基づいて、ロガーはリリースモードで例外をスローするようです(デバッグモードでは無視されます)。
Terence's answer に従ってリントチェックを無効にできますが、警告されています。
必要に応じて無効にすることができます。
Android Studio、Analyze-> Inspect Code。
[検査プロファイル]で、3つの水平ドットが付いたボタンをクリックします。
次のウィンドウが開きます。 「log」を検索し、「Too Long Log Tags」のチェックを外します。
更新: Android Studio 2.2、以下にありますAndroid Lint:Correctness
@Terenceによる回答の補完
Build.gradleファイルでこれを使用して、gradle経由で特定のチェックをオフにすることもできます。
lintOptions {
disable 'LongLogTag'
}
または、xmlを使用してlint.xmlファイルをプロジェクトに追加します。
<?xml version="1.0" encoding="UTF-8"?>
<lint>
<issue id="LongLogTag" severity="ignore" />
</lint>
このリントチェックを決して無視することはできません。例外をスローして実行を停止するため、リリースバージョンで予期しない結果をもたらす可能性があります(アプリがクラッシュしません)。
私は最近、ひどい教訓を学びました。デバッグモードでは問題ありませんが、リリースバージョンでは異なる動作をします。
これは最近の変更です。このビルドでは、新しいリントチェックが行われます。それは言う、
値を解決できる場合、ロギングコールに渡されるタグが最大で23文字の長さであることを確認します(ロギングAPIで必要)。
詳細については、以下のリンクの3番目のポイントをお読みください。
https://sites.google.com/a/Android.com/tools/recent/androidstudio11preview2
これを取得したくない場合は、TAG内の文字数を最小化し、23文字を超えないようにしてください。
これが起こる理由を説明するには:
AOSPソースコードによると、任意のタグでログを記録できます。問題は_Log.isLoggable
_にあります。
_Log.isLoggable
_は、記録する優先度が有効になっている場合、システムプロパティ_log.tag.<YOUR_TAG>
_をチェックします。このメカニズムのドキュメントは次のとおりです。
public static boolean isLoggable (String tag, int level)
指定されたタグのログが指定されたレベルでログ記録可能かどうかを確認します。タグのデフォルトレベルはINFOに設定されます。これは、INFO以上のレベルがログに記録されることを意味します。ロギングメソッドを呼び出す前に、タグを記録する必要があるかどうかを確認する必要があります。システムプロパティ「setprop log.tag」を設定することにより、デフォルトレベルを変更できます。 'levelは、VERBOSE、DEBUG、INFO、WARN、ERROR、ASSERT、またはSUPPRESSです。 SUPPRESSは、タグのすべてのロギングをオフにします。また、「log.tag。=」を含むlocal.propファイルを作成し、/ data/local.propに配置することもできます。
ソース: https://developer.Android.com/reference/Android/util/Log#isLoggable(Java.lang.String、%20int)
API 26(Oreo)より下では、システムプロパティキーの制限は31文字でした。そして"log.tag.".length() + 23
は31です。以下のように_Log.isLoggable
_を呼び出すと、Android 23文字を超えるタグを持つOreoは、 inソースコード 。Android O以降、この制限は適用されません。
Lintルールは、これらすべての(通常)不必要な詳細からユーザーを保護するためだけに存在します。
_Log.isLoggable
_のドキュメントには、IllegalArgumentException
がnotがスローされることも記載されています。API24は私の調査結果によると間違っています。フォロー: https://issuetracker.google.com/issues/124593220