)]}'
{
  "log": [
    {
      "commit": "1cce9fa482fcac4bce1024dab7ee8b7635ff9d7d",
      "tree": "e3d6d41f9bc2a09cae52907ade1126d0785a7af7",
      "parents": [
        "d632180676fddc9cc11b42fcca028ac10fbb3fb0"
      ],
      "author": {
        "name": "Kornel Dulęba",
        "email": "korneld@google.com",
        "time": "Mon Jan 27 12:09:01 2025 +0000"
      },
      "committer": {
        "name": "Kornel Dulęba",
        "email": "korneld@google.com",
        "time": "Thu Feb 20 05:35:15 2025 -0800"
      },
      "message": "logpersist: Remove the ro.debuggable check\n\nThis script really implements three functionalities using ${progname} to\ndecide what to do. Only one of them - logpersist.cat - requires the\nbuild to be debuggable due to a dependency on the \"su\" binary.\nRemove the check altogether, since arguably it\u0027s not really useful and\nprevents us from using the script on user builds.\nWith this change \"logpersist.cat\" will now fail complaining about:\n\"/system/bin/logpersist.cat[166]: su: inaccessible or not found\",\ninstead logging a \"logpersist.cat - Permission denied\" error message.\n\nBug: 390135414\nTest: Verify that persistent logcat can be started on user build.\nChange-Id: I7665d42de1ff8a4ad1ef0e32721ef892e9798c0b\n"
    },
    {
      "commit": "f3568188d89e74f1202d4266c587ecb4cf027df4",
      "tree": "ea918386210c2fdd067b9bf210fe8d2039c6b266",
      "parents": [
        "864bf3947f3b876d987e066bdf5b926d4e9ad876"
      ],
      "author": {
        "name": "Istvan Nador",
        "email": "istvannador@google.com",
        "time": "Wed Feb 15 10:38:12 2023 +0000"
      },
      "committer": {
        "name": "Istvan Nador",
        "email": "istvannador@google.com",
        "time": "Wed Feb 15 16:21:29 2023 +0000"
      },
      "message": "logpersist: make the am command an optional dependency\n\nOnly call am to restart the Settings application when the am command is\navailable.\n\nlogpersist restarts the Settings application whenever it changes\npersist.logd.logpersistd or persist.log.tag, directly, or indirectly via\nlogcatd.rc. It does so, because the Settings application\u0027s inner state\ndepends on these properties, and it doesn\u0027t automatically pick up any\nchanges to them.\n\nHowever, some stripped down versions of Android, such as Microdroid and\nMinidroid, do not include the am command, the Activity manager, Java\nAPIs or the Settings application. Thus, for instance on Minidroid,\nlogpersist prints out a confusing error message when it calls am, even\nthough it completes successfully, and there\u0027s no Settings application\nto restart.\n\nBug: 267597848\nTest: manually tested logpersist on Minidroid and on a regular phone\n      build (aosp_cf_x86_64_phone-userdebug) running on Cuttlefish.\n      * on Minidroid: logpersist.start prints that it\u0027s attempting to\n        kill the Settings app, then that am is unavailable, but no\n        other errors.\n      * on phone: logpersist.start prints that it\u0027s attempting to kill\n        the Settings app and no other errors, meaning that it completes\n        successfully.\n\nChange-Id: I9a0f779d51042b5b66aa1406b27a11e848a0312d\n"
    },
    {
      "commit": "074a9029e243978073e9e69a595db0e9b64b53b0",
      "tree": "c2398573e09ab1a97739517233aed899fe33ad40",
      "parents": [
        "d8ea11f48700e2c399cc8cafa31765ab3ded4adf"
      ],
      "author": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Wed Oct 30 14:52:01 2019 -0700"
      },
      "committer": {
        "name": "Tom Cherry",
        "email": "tomcherry@google.com",
        "time": "Thu Oct 31 06:43:47 2019 -0700"
      },
      "message": "logcat: fix logpersist.stop and logpersist.clear\n\nTest: these work\nChange-Id: Ib0b0b5408c93a05f39d1b585256a2c7c34736e7e\n"
    },
    {
      "commit": "816437499d076300f9c0cb2f2be72d4dd58a4db4",
      "tree": "87014359238f8c623735e87b5a902f19027c0c3b",
      "parents": [
        "175773d21699331abd75bfaaad7f49b34dcfd23e"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Aug 03 15:13:51 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Aug 08 10:20:22 2016 -0700"
      },
      "message": "logcatd: fix up logpersist.cat to filter out signature file\n\nSimple filter for no suffix, or a numerical suffix. toybox\ngrep did not handle a more robust regex, so we opted for\nkiss in order to remove the .id suffix from consideration.\n\nBug: 30591615\nChange-Id: I5b1c929d3e69c1ae39af95ae44a69f7b55e969ed\n"
    },
    {
      "commit": "d149ba25231fc80d8222f151645a9d97bd96284b",
      "tree": "b60adacb769ebf70dfb5ac1384d1069c48bc812c",
      "parents": [
        "241fdedfb19c571f2f96182543fdd0a2709cf583"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Aug 04 08:39:52 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Aug 08 10:03:05 2016 -0700"
      },
      "message": "logcatd: logpersist.start more descriptive warning\n\n\"killing Settings\" is meaningless without context, we are killing the\nSettings application to pull in new values, so make this clearer!\n\nChange-Id: Ice0b950040bd05dcd49b7315def4dac3dd93eb27\n"
    },
    {
      "commit": "ea47afdff7b23aeb8d8ac6b60710c43eb09fb251",
      "tree": "a64294abfe2e88a6fa58406f5b337e99b5139b60",
      "parents": [
        "96d46fa536ef4aa0499823e956c4d293e4ddbd6d"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Jul 21 14:00:30 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Jul 21 14:19:39 2016 -0700"
      },
      "message": "logcatd: logpersist.start to enable logd service if disabled\n\nBug: 28936216\nChange-Id: I2f2878f138be6675bf00bd638df2bdd690a1fae5\n"
    },
    {
      "commit": "7e80417b3f906aa98c60e1ae87b9a4b44c677b7c",
      "tree": "4cba972177bf5d9e511d8c3be370462525c8a2c8",
      "parents": [
        "8d2abc94fdc80697fb42aec2dbf3e2a54f9da058"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Jul 07 09:24:51 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Jul 08 11:06:06 2016 -0700"
      },
      "message": "logcatd: trampoline persist.logd.logpersistd to logd.logpersistd\n\nBest practices so that device can set logd.logpersistd properties.\nValues can be overriden with trampolines for persist.logd.logpersistd\nvalues except as designed for empty content to keep out of the way.\n\nThis allows us to set logd.logpersistd* for a non-persistent collection\nthat does not survive a reboot, and to use persist.logd.logpersistd*\nfor persistent collection that does survive a reboot.\n\nAdded logd.logpersistd.enable to gate when logpersist service can be\nrun allowing the properties to be adjusted safely prior to this state\nas is the case for device property.\n\nNB: /init will complain when trying to trampoline an empty property,\n    this is acceptable for functionality, but may be considered\n    annoying from the logging perspective.\n\nBug: 28936216\nBug: 29831823\nChange-Id: I97317e8eedfae4daa8e3ef39e64e7c5c23d8b573\n"
    },
    {
      "commit": "0bd1935f31cf86008882a5d26ce8434ccc5f7482",
      "tree": "77d0a641f92cd6704380f377ac1996495ea1cbbc",
      "parents": [
        "c0931f91d066f6c761aceb6bb1f016bfadd0f114"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Jun 06 11:22:13 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Jun 10 21:43:16 2016 +0000"
      },
      "message": "logcatd: add stop and clear actions\n\n- add stop and clear (and stop) actions to logcatd.rc\n- use stop and clear actions in logpersist script\n\nBug: 28936216\nChange-Id: Id05118fb51e40609fd7b3a934cf9302f67ef6d1d\n"
    },
    {
      "commit": "3ac5bc1ac9d7db3d516a82c42d55dfc63b0421f1",
      "tree": "9e32790ebdb518e5527694d5278df143aecb82c8",
      "parents": [
        "93b8c91613259777134c48d9c3428898ee10abbe"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Jun 06 11:22:13 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Fri Jun 10 21:42:47 2016 +0000"
      },
      "message": "logcatd: Do not su for setprop\n\nsepolicy now permits setting persist.logd.logpersistd in shell\n\nBug: 28936216\n"
    },
    {
      "commit": "720a55d6ca842f30a3e16faed994edf1061dc5d6",
      "tree": "2d693c4bed4b911d2d6aa55d61ef90faa0ef7a10",
      "parents": [
        "e50f34d4ce84b3171f2e675eec1d29025bcc9098"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Jun 01 15:35:41 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Thu Jun 02 09:51:13 2016 -0700"
      },
      "message": "logpersist: switch to pgrep from ps\n\nChanges expected output from a line cut from the less than portable\nps output to reporting the pid of logcatd (uid\u003dlogd comm\u003dlogcat).\nPreserve reporting an error code if logcatd did not start.\n\nBug: 29075536\nChange-Id: I61aa0a4787d4594c415d2c7db5bbb0e512676bf8\n"
    },
    {
      "commit": "d34f7d807da191e7803c1b60d75a8d33fc81166b",
      "tree": "b53ee1bc3fd3d65068940cc3b4093d724089ac2d",
      "parents": [
        "14dd7df2556362b6e9de7a8ad859467ac20706e4"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Apr 12 14:35:27 2016 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Apr 18 08:54:39 2016 -0700"
      },
      "message": "logpersist: incorporate size and buffer tunables\n\n- Add hidden -n and -b flags that propagate to the underlying\n  logcat command. Publish aliases in help as --size and --buffer.\n- Add --clear for start command so it clears before starting\n- shell script bloating up to deal with option validation and\n  provide ERROR: and WARNING: advice.\n\nToDo:\n\n- Deprecate shell script and replace with Eng and Userdebug\n  only Developer Options, before it becomes too powerful\n  or bloated to force us to rewrite an expendable like this\n  into C++.\n\nBug: 28120456\nChange-Id: I0dff8acaa1e5c929454760cfa2801924956bc25d\n"
    },
    {
      "commit": "7a8d98afc007b202eacf8695a8efe2c75b4ae579",
      "tree": "5bdeeaa30f91f504a573568a3636f561b0ee6110",
      "parents": [
        "1177aca38e05b81cfe54ebffb34d87682b31e0a5"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Feb 09 15:49:29 2016 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Wed Feb 10 10:23:03 2016 -0800"
      },
      "message": "logd: use ro.debuggable instead of ro.build.type\n\nChange-Id: Ic644f1f78e68094f700834675f4acc63386a6b92\n"
    },
    {
      "commit": "214f9b08b9c4fc542c2d7fc906496838675757fe",
      "tree": "e9effc55da903a804a7a9c5bf09315ad94a3132d",
      "parents": [
        "754ac501ca32571751de0f52860876600b304a8a"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Dec 29 07:31:31 2015 -0800"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Dec 29 07:31:37 2015 -0800"
      },
      "message": "logpersist: missing X\n\nSigned-off-by: LawrenceSY_Kuo@asus.com\nBug: 19608716\nChange-Id: I90e0313262a02906dec71417b995fc725f78a292\n"
    },
    {
      "commit": "fb0f88e2686f9dca40bc57c9052e02d044ae30a8",
      "tree": "184d625fe83545bc2d9ca9f743362a92a73ac8c4",
      "parents": [
        "39835cffd14bc9717d3860a8302f3fe66cbbc646"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Sep 21 10:51:15 2015 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Sep 21 13:53:01 2015 -0700"
      },
      "message": "logpersist: bundle with logcatd service\n\nBug: 23186545\nChange-Id: I130d7c7e120acb372e58aec028f39e161d53628e\n"
    },
    {
      "commit": "39835cffd14bc9717d3860a8302f3fe66cbbc646",
      "tree": "678e68688f3886cf05825ddbbf99b0ca788639a7",
      "parents": [
        "489ca27427dde4ae65dbb77e5c2ffa4c46b3e47e"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Sep 21 10:45:10 2015 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Mon Sep 21 13:52:45 2015 -0700"
      },
      "message": "logpersist: Additional barrier\n\nIf this shows up on \"user\" builds, block execution\n\nChange-Id: I2e137d1ff7583ac000b81dee7390b582dfd02095\n"
    },
    {
      "commit": "59dde2190011d139af6c2c1a6998711f97862e17",
      "tree": "2210d41948fab1d2f3a55a1560e900de83cb607c",
      "parents": [
        "38fc72cda73cc485bb150587b89a9e1631847d7c"
      ],
      "author": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue May 26 14:57:13 2015 -0700"
      },
      "committer": {
        "name": "Mark Salyzyn",
        "email": "salyzyn@google.com",
        "time": "Tue Jun 02 15:17:59 2015 -0700"
      },
      "message": "init.rc: logd: Add logpersistd (nee logcatd)\n\n- logpersistd is defined as a thread or process in the context of the\n  logd domain. Here we define logpersistd as logcat -f in logd domain\n  and call it logcatd to represent its service mechanics.\n- Use logcatd to manage content in /data/misc/logd/ directory.\n- Only turn on for persist.logd.logpersistd \u003d logcatd.\n- Add logpersist.start, logpersist.stop and logpersist.cat debug\n  class executables, thus only in the eng and userdebug builds.\n\nToDo: Wish to add Developer Options menu to turn this feature on or\noff, complicated by the fact that user builds have no tools with\naccess rights to /data/misc/logd.\n\nBug: 19608716\nChange-Id: I57ad757f121c473d04f9fabe9d4820a0eca06f31\n"
    }
  ]
}
