Logcat on komentorivityökalu, joka kaataa lokin järjestelmäsanomia, mukaan lukien pinon jälkiä, kun laite heittää virheen, ja viestejä, jotka olet kirjoittanut sovelluksestasiLog
Luokka.
Tämä sivu käsittelee komentorivin logcat-työkalua, mutta Logmessageja voi tarkastella myös Android Studion Logcat-ikkunasta. Lisätietoja katselu ja suodatus lokit Android Studio,katso kirjoittaa ja katsella lokit withLogcat.
Logging system overview
Android logging system on joukko järjestelmäprosessin ylläpitämiä jäsenneltyjä pyöreitä puskureita logd
. Järjestelmä vahvistaa ja määrittelee käytettävissä olevat Puskurit. Oleellisimmat ovat: main
, joka tallentaa useimmat sovelluslokit, system
, joka tallentaa Android-käyttöjärjestelmästä peräisin olevia viestejä, ja crash
, joka tallentaa kaatumislokeja. Jokaisella lokimerkinnällä on prioriteetti (yksi VERBOSE
DEBUG
INFO
WARNING
ERROR
tai FATAL
), tunniste, joka tunnistaa lokin alkuperän ja varsinaisen lokiviestin.
ensisijainen rajapinta lokijärjestelmään on jaettu kirjasto liblog
ja sen otsikko <android/log.h>
. Kaikki Kielikohtaiset kirjauslaitokset kutsuvat lopulta funktiota __android_log_write
. Oletuksena se kutsuu funktiota __android_log_logd_logger
, joka lähettää lokimerkinnän logd
pistoketta käyttäen. API-tasosta 30 alkaen lokitoimintoa voi muuttaa kutsumalla __android_set_log_writer
. Lisätietoja on saatavilla NDK: n dokumentaatiosta.
adb logcat
näyttävät lokit käyvät läpi neljä suodatustasoa:
- Compile-time-suodatus: koosteasetuksista riippuen jotkin lokit voidaan poistaa kokonaan binääristä. Proguard voidaan konfiguroida esimerkiksi poistamaan kutsut
Log.d
Java-koodista. - järjestelmän ominaisuussuodatus:
liblog
tiedustelee järjestelmän ominaisuuksien joukkoa määrittääkseen sille lähetettävän vähimmäisvahvuustasonlogd
. Jos lokissa on tunnisteMyApp
, seuraavat ominaisuudet tarkistetaan ja niiden oletetaan sisältävän ensimmäisen kirjaimen vähimmäisvakavuuden (V
D
I
I
W
E
, taiS
kaikkien lokkien poistaminen käytöstä):
log.tag.MyApp
persist.log.tag.MyApp
log.tag
persist.log.tag
liblog
käyttää __android_log_set_minimum_priority
asettamaa minimiprioriteettia. Oletusasetus on INFO
.adb logcat
tukee lisäsuodattimia, joilla voidaan vähentää logd
näytettyjen lokien määrää. Katso alta tarkemmat tiedot.komentorivin syntaksi
logcatin ajamiseksi adb-komentotulkin läpi yleinen käyttö on:
logcat ... ...
voit ajaa logcat
adb-käskynä tai suoraan emulaattorin tai liitetyn laitteen komentotulkkikehotteessa. Jos haluat tarkastella lokitulostetta adb: llä, siirry SDK: Hon platform-tools/
hakemistoon ja suorita:
adb logcat
For logcat
online-ohje, käynnistä laite ja suorita sitten:
adb logcat --help
voit luoda KOMENTOTULKKIYHTEYDEN laitteeseen ja suorittaa:
$ adb shell# logcat
vaihtoehdot
seuraava taulukko kuvaa logcat
komentorivivalintoja.
Option | kuvaus |
---|---|
-b <buffer> |
|
-c, --clear |
Tyhjennä (huuhtele) valitut Puskurit ja poistu. Oletuspuskurijoukko on main system ja crash . Poista kaikki Puskurit käyttämällä -b all -c . |
-e <expr>, --regex=<expr>
|
vain tulostusviivat, joissa lokiviesti vastaa <expr> jossa<expr> on säännöllinen lauseke. |
-m <count>, --max-count=<count>
|
lopeta tulostamisen jälkeen <count> rivien lukumäärä. Tämä on tarkoitettu pariksi --regex , mutta toimii omillaan. |
--print
|
pariksi --regex ja--max-count , jotta sisältö ohittaa regex-suodattimen, mutta pysähtyy silti oikeaan osumamäärään. |
-d |
dumppaa loki näytölle ja poistuu. |
-f <filename> |
Kirjoita lokiviestin lähtö <filename> . Oletusarvo on stdout . |
-g, --buffer-size |
tulosta määritetyn lokipuskurin ja uloskäyntien koko. |
-n <count> |
Aseta käännettyjen lokien enimmäismäärä <count> . Oletusarvo on 4. Vaatii -r – vaihtoehdon. |
-r <kbytes> |
Kierrä lokitiedostoa joka <kbytes> tulosteesta. Oletusarvo on 16. Vaatii -f – vaihtoehdon. |
-s |
vastaa suodatinlauseketta '*:S' , joka asettaa kaikkien tagien tärkeysjärjestyksen äänettömäksi, ja sitä käytetään edeltämään luetteloa sisältöä lisäävistä suodatuslausekkeista. Lisätietoja, mene osio suodatus lokitiedoston. |
-v <format> |
Aseta lokiviestien tulostemuoto. Oletusarvo on threadtime format. Jos haluat luettelon tuetuista formaateista, siirry kohtaan Ohjauslokin tulostusmuoto. |
-D, --dividers |
tulosta jakajat jokaisen lokipuskurin välillä. |
-c |
huuhtele (Tyhjennä) koko loki ja poistu. |
-t <count> |
tulosta vain viimeisin rivimäärä. Tämä vaihtoehto sisältää -d toiminnallisuuden. |
-t '<time>' |
tulosta viimeisimmät rivit määritetyn ajan jälkeen. Tämä vaihtoehto sisältää -d toiminnallisuuden. Katso-P-valitsimesta lisätietoja parametrien lainaamisesta upotetuilla välilyönneillä.
adb logcat -t '01-26 20:52:41.820' |
-T <count> |
tulosta viimeisin rivimäärä määritetyn ajan jälkeen. Tämä valinta ei sisällä -d toiminnallisuus |
-T '<time>' |
tulosta viimeisimmät rivit määritetyn ajan jälkeen. Tämä vaihtoehto ei sisällä include -d toiminnallisuus. Katso-P-valitsimesta lisätietoja parametrien lainaamisesta upotetuilla välilyönneillä.
adb logcat -t '01-26 20:52:41.820' |
-L, -last |
dumppasi lokit ennen viimeistä uudelleenkäynnistystä. |
-B, --binary |
tulosta loki binäärimuodossa. |
-S, --statistics |
Sisällytä tulosteeseen tilastoja, joiden avulla voit tunnistaa ja kohdentaa loki-roskapostittajia. |
-G <size> |
Aseta lokirengaspuskurin koko. Voidaan lisätä K tai M loppuun kilotavua tai megatavua. |
-p, --prune
|
Print (read) the current allow (white ) and deny (black ) luettelee eikä ota vastaan argumentteja seuraavasti:
adb logcat -p |
-P '<list> ...'
|
write (set) the allow (white ) and deny (black sisällön kirjaaminen tiettyyn tarkoitukseen. Annat sekalaisen sisällön sallituista (<white> ) ja kielletyistä (~<black> ) luettelotiedoista, joissa <white> tai <black> voi olla UID, UID/PID tai /PID. Logcat-tilastoista (logcat -S ) saatujen ohjeiden perusteella voidaan harkita mukautuksia allow (white ) ja deny (black ) – luetteloihin esimerkiksi seuraavia tarkoituksia varten:
oletusarvoisesti lokijärjestelmä estää automaattisesti lokitilaston pahinta rikkojaa tekemästä dynaamisesti tilaa uusille lokiviesteille. Kun heuristiikka on käytetty loppuun, järjestelmä karsii vanhimmat merkinnät tehdäkseen tilaa uusille viesteille. sallitun listan lisääminen ( lainausmerkit $ adb logcat -P '"<white_and_blacklist>"'oradb shell$ logcat -P '<white_and_blacklist>' seuraavassa esimerkissä on sallittu ( adb logcat -P '"/32676 675 ~/32677 897"' muut salli ( ~! worst uid blacklist~1000/! worst pid in system (1000) |
--pid=<pid> ... |
tulostaa vain lokit annetusta PID: stä. |
--wrap |
lepää 2 tuntia tai kun puskuri on pakenemassa kumpi tulee ensin. Parantaa tehokkuutta gallups tarjoamalla Noin-to-wrap herätys. |
suodatus log output
- lokiviestin tunniste on lyhyt merkkijono, joka ilmaisee järjestelmän komponentin, josta viesti on lähtöisin (esimerkiksi ”View” näkymäjärjestelmälle).
- prioriteetti on jokin seuraavista merkkiarvoista alimmasta korkeimpaan prioriteettiin järjestettynä:
-
V
: Verbose (alin prioriteetti) -
D
: Debug -
I
: info -
W
: Varoitus -
E
: virhe
F
: kohtalokas S
: Hiljainen (korkein prioriteetti, johon ei koskaan paineta mitään)
voit saada luettelon järjestelmässä käytetyistä tageista tärkeysjärjestyksineen ajamalla logcat: in ja tarkkailemalla kunkin viestin kahta ensimmäistä saraketta, jotka annetaan <priority>/<tag>
.
Seuraavassa on esimerkki lyhyestä logcat-tulosteesta, joka on saatu logcat -v brief output
– komennolla. Se osoittaa, että viesti liittyy prioriteettitasoon ” I ”ja tagiin ”ActivityManager”:
I/ActivityManager( 585): Starting activity: Intent { action=android.intent.action...}
log-ulostulon vähentämiseksi hallittavalle tasolle voit rajoittaa lokitulostetta suodatinlausekkeilla. Suodinlausekkeiden avulla voit ilmoittaa järjestelmälle tagit-prioriteettiyhdistelmät — joista olet kiinnostunut-järjestelmä estää muita viestejä määritetyille tageille.
suodatinlauseke noudattaa tätä muotoa tag:priority ...
, jossa tag
ilmoittaa kiinnostavan merkin ja priority
ilmoittaa kyseisen merkinnän raportoitavan prioriteetin vähimmäistason. Kyseisen tunnisteen viestit määritetyllä prioriteetilla tai sen yläpuolella kirjoitetaan lokiin. Voit antaa minkä tahansa määrän tag:priority
määrityksiä yhdellä suodatinlausekkeella. Määritysten sarja on tyhjämerkit-rajattu.
tässä on esimerkki suodatinlausekkeesta, joka estää kaikki lokiviestit paitsi ne, joissa on merkintä ”ActivityManager”, prioriteetilla ”Info” tai sen yläpuolella, ja kaikki lokiviestit, joissa on tagi ”MyApp”, prioriteetilla ”Debug” tai yläpuolella:
adb logcat ActivityManager:I MyApp:D *:S
yllä olevan lausekkeen viimeinen elementti, *:S
, asettaa kaikkien tagien prioriteettitason ”hiljaiseksi”, jolloin näytetään vain lokiviestit, joissa on ”ActivityManager” ja ”MyApp”. Käyttämällä *:S
on erinomainen tapa varmistaa, että lokituotos on rajoitettu suodattimiin, jotka olet nimenomaisesti määrittänyt — se antaa suodattimiesi toimia sallituslistana lokituotokselle.
seuraavassa suodatinlausekkeessa näytetään kaikki lokiviestit, joiden prioriteettitaso on” varoitus ” ja korkeampi, kaikissa tageissa:
adb logcat *:W
Jos suoritat logcat: ia kehitystietokoneeltasi (vs. suoritat sitä etänä adb-komentotulkilla), voit myös asettaa oletussuodattimen lausekkeen viemällä ympäristömuuttujalle arvon ANDROID_LOG_TAGS
:
export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"
huomaa, että ANDROID_LOG_TAGS
suodatinta ei viedä emulaattori/laite-instanssiin, jos käytät logcatia etätulkilta tai käytät adb shell logcat
.
Ohjauslokin tulostusmuoto
lokiviestit sisältävät tunnisteen ja prioriteetin lisäksi useita metatietokenttiä. Voit muokata viestien esitysmuotoa niin, että ne näyttävät tietyn metatietokentän. Tätä varten voit käyttää -v
– valintaa ja määrittää jonkin alla luetelluista tuetuista tulostusmuodoista.
-
brief
: Näytä viestin antavan prosessin prioriteetti, tunniste ja PID. -
long
: Näytä kaikki metatietokentät ja erilliset viestit tyhjillä riveillä. -
process
: Näytä vain PID. -
raw
: Näytä raaka lokiviesti ilman muita metatietokenttiä. -
tag
: Näytä vain prioriteetti ja tunniste. -
thread:
vanha muoto, joka näyttää viestin antavan säikeen prioriteetin, PID: n ja TID: n. -
threadtime
(oletusarvo): Näytä viestin antavan säikeen päivämäärä, kutsuaika, prioriteetti, tagi, PID ja TID. -
time
: Näytä viestin antavan prosessin päivämäärä, kutsuaika, prioriteetti, tunniste ja PID.
kun käynnistät logcat: in, voit määrittää haluamasi tulostusmuodon käyttämällä -v
option:
logcat
tässä on esimerkki, joka näyttää, miten viestit luodaan thread
tulostusmuoto:
adb logcat -v thread
huomaa, että -v
– valinnalla voi määrittää vain yhden esitysmuodon, mutta voit määrittää niin monta muokkaajaa, joissa on järkeä. Logcat jättää huomiotta modifioijat, joissa ei ole järkeä.
Format modifiers
Format modifiers muuttaa logcat-tulostetta yhden tai useamman seuraavan modifierin yhdistelmänä. Jos haluat määrittää format modifierin, käytä -v
valitsinta seuraavasti:
adb logcat -b all -v color -d
jokaisessa Android-lokiviestissä on tunniste ja siihen liittyvä prioriteetti. Voit yhdistää minkä tahansa format modifierin mihin tahansa seuraavista formaattivaihtoehdoista: brief
long
process
raw
tag
thread
threadtime
, and time
.
You can get the format modifier details by typing logcat -v --help
at the command line.
-
color
: Show each priority level with a different color. -
descriptive
: Show log buffer event descriptions. Tämä muokkaaja vaikuttaa vain tapahtumalokipuskuriviesteihin, eikä sillä ole vaikutusta muihin ei-binäärisiin puskureihin. Tapahtumakuvaukset tulevat event-log-tags-tietokannasta. -
epoch
: Näyttöaika sekunneissa alkaen 1.tammikuuta 1970. -
monotonic
: Näyttöaika SUORITINSEKUNTEINA viimeisestä käynnistyksestä alkaen. -
printable
: varmista, että binäärinen kirjaussisältö karkaa. -
uid
: jos käyttöoikeuksien valvonta sallii, Näytä kirjautuneen prosessin UID-tai Android-tunnus. -
usec
: Näytä aika tarkasti mikrosekunteihin asti. -
UTC
: Näyttöaika UTC: nä. -
year
: lisätään vuosi näytettyyn aikaan. -
zone
: lisätään paikallinen aikavyöhyke näytettyyn aikaan.
vaihtoehtoisten lokipuskureiden katselu
Android-lokijärjestelmä pitää lokiviesteille useita pyöreitä puskureita, eikä kaikkia lokiviestejä lähetetä oletuspuskuriin. Jos haluat nähdä ylimääräisiä lokiviestejä, voit suorittaa logcat
– komennon -b
– valinnalla, jolloin voit pyytää vaihtoehtoisen ympyräpuskurin katselua. Voit tarkastella mitä tahansa näistä vaihtoehtoisista puskureista:
-
radio
: Tarkastele puskuria, joka sisältää radio – / puhelinviestejä. -
events
: Katso tulkitut binäärijärjestelmän tapahtumapuskurisanomat. -
main
: Näytä päälokipuskuri (oletusarvo) ei sisällä järjestelmän ja kaatumisen lokiviestejä. -
system
: Näytä järjestelmälokipuskuri (oletus). -
crash
: Näytä kaatumislokipuskuri (oletusarvo). -
all
: Katso kaikki Puskurit. -
default
: Reportsmain
system
, jacrash
Puskurit.
-b
vaihtoehto on:
logcat
tässä on esimerkki siitä, miten radio-ja puhelinviestejä sisältävää lokipuskuria voi tarkastella:
adb logcat -b radio
voit myös määrittää useita -b
lippuja kaikille tulostettaville puskureille seuraavasti:
logcat -b main -b radio -b events
voit määrittää yhden -b
lipun, jossa on pilkulla erotettu puskuriluettelo, esimerkiksi:
logcat -b main,radio,events
kirjautuminen koodista
Log
Luokka mahdollistaa lokimerkintöjen luomisen koodiin, joka näkyy logcat-työkalussa. Yleisiä hakkuutapoja ovat:
-
Log.v(String, String)
(verbose) -
Log.d(String, String)
(debug) -
Log.i(String, String)
(information) -
Log.w(String, String)
(warning) -
Log.e(String, String)
(error)
For example, using the following call:
Kotlin
Log.i("MyActivity", "MyClass.getView() — get item number $position")
Java
Log.i("MyActivity", "MyClass.getView() — get item number " + position);
The logcat outputs something like:
I/MyActivity( 1557): MyClass.getView() — get item number 1