Skip to content

Instantly share code, notes, and snippets.

@marius-m
Last active November 7, 2022 10:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save marius-m/f510e2dbbdf3c881e991ef2c139d1a6d to your computer and use it in GitHub Desktop.
Save marius-m/f510e2dbbdf3c881e991ef2c139d1a6d to your computer and use it in GitHub Desktop.
/**
* Debugging utils
*/
object LogUtils {
/**
* Converts [obj] to instance signature
* Easier to figure out different object instance usage in combination to logging
*/
@JvmStatic
fun asStringInstance(obj: Any?): String {
return if (obj != null) {
String.format(
"[%s@%s]",
obj.javaClass.simpleName,
Integer.toHexString(obj.hashCode())
)
} else "[null@instance]"
}
@JvmStatic
fun asStringInstance(klass: KClass<*>, obj: Any?): String {
return if (obj != null) {
String.format(
"[%s@%s]",
klass.simpleName,
Integer.toHexString(obj.hashCode())
)
} else "[null@instance]"
}
@JvmStatic
private fun objMessage(klass: KClass<*>, obj: Any?, message: String): String {
return String.format("%s: %s", asStringInstance(klass, obj), message)
}
@JvmStatic
private fun objMessage(obj: Any?, message: String): String {
return String.format("%s: %s", asStringInstance(obj), message)
}
fun String.withLogInstance(obj: Any?): String {
return objMessage(obj, this)
}
fun String.withKLogInstance(klass: KClass<*>, obj: Any?): String {
return objMessage(klass, obj, this)
}
fun String.withLogClass(klass: Class<*>): String {
return String.format("[%s]: %s", klass.simpleName, this)
}
fun String.withLogKlass(klass: KClass<*>): String {
return String.format("[%s]: %s", klass.simpleName, this)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment