android拦截器日志框架,Android Room数据库DAO调试日志

Alex Lipov..

13

假设Room使用框架的Sqlite作为基础数据库,则可以很简单地记录这些语句。唯一的限制:这只能在模拟器上完成。

/**

* Controls the printing of SQL statements as they are executed.

*

* Enable using "adb shell setprop log.tag.SQLiteStatements VERBOSE".

*/

public static final boolean DEBUG_SQL_STATEMENTS =

Log.isLoggable("SQLiteStatements", Log.VERBOSE);

默认情况下,log.tag.SQLiteStatements未设置的值:

alex @ mbpro:〜$ adb shell getprop log.tag.SQLiteStatements

根据上述文档,要设置属性,我们必须使用:

亚历克斯@ mbpro:〜$ ADB壳setprop log.tag.SQLiteStatements VERBOSE

亚历克斯@ mbpro:〜$ ADB壳getprop log.tag.SQLiteStatements

VERBOSE

如我们所见,该VERBOSE值已成功设置。但是,如果我们重新运行我们的应用程序-我们将看不到这些语句。为了使其正常工作,我们必须使用然后重新启动所有服务。

如果您尝试使用常规设备执行此操作,则会收到以下错误(已在Pixel XL / Android 9上尝试过): adb shell stopadb shell start

alex @ mbpro:〜$ adb shell start

开始:必须是root

alex @ mbpro:〜$ adb root

adbd无法在生产版本中作为root运行

这就是为什么我们必须使用仿真器的原因:

alex @ mbpro:〜$ adb root

以root身份重新启动adbd

alex @ mbpro:〜$ adb shell stop

alex @ mbpro:〜$ adb shell start

仿真器将重新启动。

运行您的应用程序,您将在logcat中看到类似的Sqlite语句:

V/SQLiteStatements: /my_db: "BEGIN EXCLUSIVE;"

V/SQLiteStatements: /my_db: "CREATE TABLE IF NOT EXISTS room_master_table (id INTEGER PRIMARY KEY,identity_hash TEXT)"

V/SQLiteStatements: /my_db: "INSERT OR REPLACE INTO room_master_table (id,identity_hash) VALUES(42, "3cb5664b6da264c13388292d98141843")"

V/SQLiteStatements: /my_db: "CREATE TABLE IF NOT EXISTS `MyTable` (`id` TEXT NOT NULL, `date` INTEGER, `language` TEXT, PRIMARY KEY(`id`))"

V/SQLiteStatements: /my_db: "BEGIN EXCLUSIVE;"

V/SQLiteStatements: /my_db: "PRAGMA temp_store = MEMORY;"

V/SQLiteStatements: /my_db: "PRAGMA recursive_triggers='ON';"

V/SQLiteStatements: /my_db: "CREATE TEMP TABLE room_table_modification_log(version INTEGER PRIMARY KEY AUTOINCREMENT, table_id INTEGER)"

V/SQLiteStatements: /my_db: "COMMIT;"

V/SQLiteStatements: /my_db: "SELECT * FROM MyTable"

V/SQLiteStatements: /my_db: "SELECT * FROM MyTable WHERE date = 1551562171387 AND language = 'en'"

要撤消更改,请使用以下命令:

alex @ mbpro:〜$ adb shell setprop log.tag.SQLiteStatements \“ \”

alex @ mbpro:〜$ adb shell getprop log.tag.SQLiteStatements

alex @ mbpro:〜$ adb shell stop

alex @mbpro:〜$ adb shell启动

alex @ mbpro:〜$ adb

unroot以非root 身份重新启动adbd

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值