在 Android Studio/Intellij IDEA 中自动生成 Android Log TAG
Posted
技术标签:
【中文标题】在 Android Studio/Intellij IDEA 中自动生成 Android Log TAG【英文标题】:Auto-generate Android Log TAG in Android Studio/Intellij idea 【发布时间】:2015-06-05 09:08:13 【问题描述】:在 Intellij Idea 中,当我输入 psfs
然后按 Ctrl+J IDE 给我一个对话框:
当我按下 Enter 我得到一个
我知道在哪里可以自定义我自己的输出
但我无法提供任何文档说明如何编写自己的实时模板。
最后我想得到下一个结果:
键入:psfst
-> 按 Ctrl+J -> 按 Enter
结果:
public static final String TAG = <currentClassName>.class.getSimpleName();
这会很有帮助,因为我有记录我的课程的习惯。
【问题讨论】:
【参考方案1】:在 android Studio 中超级简单,只需输入 logt
并按 Tab。
它生成:private static final String TAG = "xyzActivity";
【讨论】:
【参考方案2】:对于 Kotlin,使用
private val TAG = $CLASS_NAME$::class.java.simpleName
作为模板文本并在 CLASS_NAME 的集合表达式中作为编辑变量中的 kotlinClassName()。
【讨论】:
【参考方案3】:对于使用 Android Studio 3 和 Kotlin 的用户,有必要更改 Live Templates 的设置方式:
编辑器 >> 实时模板 >> AndroidLog
默认情况下仅适用于 Java
按“更改”按钮添加 Kotlin 并检查 Kotlin
然后它会再次工作!
更新日期: 2020
Android Studio: 3.6.2
步骤:
-
添加
调用 logtk 是你想调用的任何东西
将此代码用作模板文本
private val TAG = this::class.java.simpleName
-
添加说明
它是否适用于 Kotlin:在我的例子中,我只用于 Class
2020 年 6 月更新
不再需要设置任何东西。 Android Studio 4.0 默认带有这个功能。 Toast 也一样
【讨论】:
【参考方案4】:Android Studio 中已经存在这样的快捷方式 - 在光标位于类范围时写入 logt 并输入。
更多:
【讨论】:
不完全是。它将生成模板为private static final String TAG = "<class_name>";
未请求。但我会加分,因为这对它来说是 0.02 美元。【参考方案5】:
另一种解决方案是不为每个类使用默认的 TAG,而是使用这种方法来获取 TAG:
public class Utils
public static String getTAG(Object o)
StackTraceElement[] elements = Thread.currentThread().getStackTrace();
int position = 0;
for (int i = 0; i < elements.length; i++)
if (elements[i].getFileName().contains(o.getClass().getSimpleName())
&& !elements[i+1].getFileName().contains(o.getClass().getSimpleName()))
position = i;
break;
StackTraceElement element = elements[position];
String className = element.getFileName().replace(".java", "");
return "[" + className + "](" + element.getMethodName() + ":" + element.getLineNumber() + ")";
来自 MainActivity 的示例调用 - onResume:
Log.v(Utils.getTAG(this), "hello world");
日志输出:
[MainActivity](onResume:79): hello world
【讨论】:
其实不是关于自动生成TAG的答案。【参考方案6】:我找到了解决办法
1) 在普通组中创建一个新的实时模板2) 在模板文本中:
private static final String TAG = $CLASS_NAME$.class.getSimpleName();
3)定义使用范围:
4) 选择快捷方式:
最后点击Edit variables并将表达式值改为className()
点击Ok、Apply、Ok并使用。
【讨论】:
很棒的提示。作为建议,您可以使用 private 而不是 public,因为您为每个类设置了一个标签。 我已通过此解决方案中提出的模板修改了logt
的默认模板。这真的是我想要的,也是应该实施的方式。谢谢!
@SergeyShustikov Kotlin 呢?
这应该包含在 Android Studio 中以上是关于在 Android Studio/Intellij IDEA 中自动生成 Android Log TAG的主要内容,如果未能解决你的问题,请参考以下文章
在 Android Studio/Intellij IDEA 中自动生成 Android Log TAG
Android studio / IntelliJ构建窗口自动显示
如何在 Android Studio / IntelliJ Idea 中添加字典进行拼写检查
使用基于 Gradle 的配置时在 Android Studio (IntelliJ) 上运行简单的 JUnit 测试