170616 logcat powershell 함수(패키지필터, 레벨색상)

Edit

170616 logcat powershell 함수(패키지필터, 레벨색상)

logcat android powershell study




개요

  • 안드로이드 스튜디오에서 logcat 쓸때 로그레벨(Error, Info, Debug, Verbose …)별로 폰트컬러 구분 안되서 불편
    • 중요한 로그를 놓치기 쉬움
  • 외부 쉘로 나와서 logcat을 띄워보면 안드로이드 스튜디오때 처럼 패키지이름으로 필터링이 안됨.
    • logcat 옵션에 패키지이름으로 필터를 거는 기능은 원래 없음.
    • 로그가 너무 많아서 내 앱의 로그만 확인하는 것은 거의 불가능.


기능

  • 파워쉘에서도 패키지이름 필터링
    1. 디바이스에서 모든 프로세스 이름, pid 출력
    2. 패키지이름으로 검색된 항목의 pid 찾기
    3. pid를 이용하여 logcat 결과를 다시 필터링
  • 로그레벨별로 컬러를 다르게함
    level font color
    Fatal, Error Red
    Warning Yellow
    Information Green
    Debug Gray
    Verbose White
  • 로그를 출력하기전 디바이스내의 로그를 클리어하는 기능을 옵션으로 제공


사용법

PS C:\hhdps> hhdandroid-adb-logcat -PACKAGE_NAME com.hhd2002.hhdtest -LOG_LEVEL V -CLEAR_LOG


구현

<#
.SYNOPSIS
.EXAMPLE
#>
function hhdandroid-adb-logcat
{
    [CmdletBinding()]
    param
    (
        [Parameter(Mandatory=$true, ValueFromPipeline=$true, ValueFromPipelinebyPropertyName=$true)]
        [System.String]
        $PACKAGE_NAME,

        [parameter(Mandatory = $false, ValueFromPipeline=$true, ValueFromPipelinebyPropertyName=$true)]
        [ValidateSet("E", "W", "I", "D", "V")]
        [string]
        $LOG_LEVEL = "V",

        [parameter(Mandatory=$false, ValueFromPipeline=$true, ValueFromPipelinebyPropertyName=$true)]
        [switch]$CLEAR_LOG = $false
    )



    if ($CLEAR_LOG) {
        adb -d logcat -c
    }

    $pidStr = (adb shell ps | sls $PACKAGE_NAME).ToString().Split(" ", [System.StringSplitOptions]::RemoveEmptyEntries)[1]

    write "PID : $pidStr start logcat ..."
    write ""
    write ""
    write ""

    adb -d logcat *:$LOG_LEVEL | sls $pidStr | 
    foreach {
        if ($_ -match "$pidStr\s\d*\sF") {
            Write-Host $_ -ForegroundColor Red
        } elseif ($_ -match "$pidStr\s\d*\sE") {
            Write-Host $_ -ForegroundColor Red
        } elseif ($_ -match "$pidStr\s\d*\sW") {
            Write-Host $_ -ForegroundColor Yellow
        } elseif ($_ -match "$pidStr\s\d*\sI") {
            Write-Host $_ -ForegroundColor Green
        } elseif ($_ -match "$pidStr\s\d*\sD") {
            Write-Host $_ -ForegroundColor Gray
        } elseif ($_ -match "$pidStr\s\d*\sV") {
            Write-Host $_ -ForegroundColor White
        } else {
            Write-Host $_ -ForegroundColor White
        }
    }
}


전체설치



추가작업

일단 현재로 꼭 필요한 기능은 구현되었지만 좀더 욕심내 본다면 …
  • 디바이스 접속시 기본정보 출력
    • app info
      • package name
      • file path
      • 최초설치시각
      • 최근사용시각
    • device info
      • device id
      • 제조사 정보
      • 통신사 정보
    • network info
      • 네트워크 상태
      • mac address
      • ip address
  • 각 로그들에 threadid 정보 추가
%23%20170616%20logcat%20powershell%20%uD568%uC218%28%uD328%uD0A4%uC9C0%uD544%uD130%2C%20%uB808%uBCA8%uC0C9%uC0C1%29%0A%0A@%5Blogcat%2C%20android%2C%20powershell%2C%20study%5D%0A%0A%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A%0A%5Btoc%5D%0A%0A%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A%0A%23%23%20%uAC1C%uC694%0A-%20%uC548%uB4DC%uB85C%uC774%uB4DC%20%uC2A4%uD29C%uB514%uC624%uC5D0%uC11C%20logcat%20%uC4F8%uB54C%20%uB85C%uADF8%uB808%uBCA8%28Error%2C%20Info%2C%20Debug%2C%20Verbose%20...%29%uBCC4%uB85C%20%uD3F0%uD2B8%uCEEC%uB7EC%20%uAD6C%uBD84%20%uC548%uB418%uC11C%20%uBD88%uD3B8%0A%09-%20%uC911%uC694%uD55C%20%uB85C%uADF8%uB97C%20%uB193%uCE58%uAE30%20%uC26C%uC6C0%0A-%20%uC678%uBD80%20%uC258%uB85C%20%uB098%uC640%uC11C%20logcat%uC744%20%uB744%uC6CC%uBCF4%uBA74%20%uC548%uB4DC%uB85C%uC774%uB4DC%20%uC2A4%uD29C%uB514%uC624%uB54C%20%uCC98%uB7FC%20%uD328%uD0A4%uC9C0%uC774%uB984%uC73C%uB85C%20%uD544%uD130%uB9C1%uC774%20%uC548%uB428.%0A%09-%20logcat%20%uC635%uC158%uC5D0%20%uD328%uD0A4%uC9C0%uC774%uB984%uC73C%uB85C%20%uD544%uD130%uB97C%20%uAC70%uB294%20%uAE30%uB2A5%uC740%20%uC6D0%uB798%20%uC5C6%uC74C.%0A%09-%20%uB85C%uADF8%uAC00%20%uB108%uBB34%20%uB9CE%uC544%uC11C%20%uB0B4%20%uC571%uC758%20%uB85C%uADF8%uB9CC%20%uD655%uC778%uD558%uB294%20%uAC83%uC740%20%uAC70%uC758%20%uBD88%uAC00%uB2A5.%0A%0A%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A%0A%0A%23%23%20%uAE30%uB2A5%0A-%20%uD30C%uC6CC%uC258%uC5D0%uC11C%uB3C4%20%uD328%uD0A4%uC9C0%uC774%uB984%20%uD544%uD130%uB9C1%0A%091.%20%uB514%uBC14%uC774%uC2A4%uC5D0%uC11C%20%uBAA8%uB4E0%20%uD504%uB85C%uC138%uC2A4%20%uC774%uB984%2C%20pid%20%uCD9C%uB825%0A%092.%20%uD328%uD0A4%uC9C0%uC774%uB984%uC73C%uB85C%20%uAC80%uC0C9%uB41C%20%uD56D%uBAA9%uC758%20pid%20%uCC3E%uAE30%0A%093.%20pid%uB97C%20%uC774%uC6A9%uD558%uC5EC%20logcat%20%uACB0%uACFC%uB97C%20%uB2E4%uC2DC%20%uD544%uD130%uB9C1%0A%0A-%20%uB85C%uADF8%uB808%uBCA8%uBCC4%uB85C%20%uCEEC%uB7EC%uB97C%20%uB2E4%uB974%uAC8C%uD568%0A%09%0A%09%7C%20level%20%7C%20font%20color%20%7C%0A%09%7C%20%3A--------%20%7C%20%3A------%20%7C%0A%09%7C%20Fatal%2C%20Error%20%7C%20Red%20%7C%0A%09%7C%20Warning%20%7C%20Yellow%20%7C%0A%09%7C%20Information%20%7C%20Green%20%7C%0A%09%7C%20Debug%20%7C%20Gray%20%7C%0A%09%7C%20Verbose%20%7C%20White%20%7C%0A%0A-%20%uB85C%uADF8%uB97C%20%uCD9C%uB825%uD558%uAE30%uC804%20%uB514%uBC14%uC774%uC2A4%uB0B4%uC758%20%uB85C%uADF8%uB97C%20%uD074%uB9AC%uC5B4%uD558%uB294%20%uAE30%uB2A5%uC744%20%uC635%uC158%uC73C%uB85C%20%uC81C%uACF5%0A%0A%0A%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A%0A%0A%23%23%20%uC0AC%uC6A9%uBC95%0A%0A%60%60%60powershell%0APS%20C%3A%5Chhdps%3E%20hhdandroid-adb-logcat%20-PACKAGE_NAME%20com.hhd2002.hhdtest%20-LOG_LEVEL%20V%20-CLEAR_LOG%0A%60%60%60%0A%0A%21%5B%5D%28http%3A//s21.postimg.org/t2b9g3vef/screenshot_2017_06_17_at_00_13_27.png%29%0A%0A%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A%0A%0A%0A%23%23%20%uAD6C%uD604%0A%0A%60%60%60powershell%0A%3C%23%0A.SYNOPSIS%0A.EXAMPLE%0A%23%3E%0Afunction%20hhdandroid-adb-logcat%0A%7B%0A%20%20%20%20%5BCmdletBinding%28%29%5D%0A%20%20%20%20param%0A%20%20%20%20%28%0A%20%20%20%20%20%20%20%20%5BParameter%28Mandatory%3D%24true%2C%20ValueFromPipeline%3D%24true%2C%20ValueFromPipelinebyPropertyName%3D%24true%29%5D%0A%20%20%20%20%20%20%20%20%5BSystem.String%5D%0A%20%20%20%20%20%20%20%20%24PACKAGE_NAME%2C%0A%0A%20%20%20%20%20%20%20%20%5Bparameter%28Mandatory%20%3D%20%24false%2C%20ValueFromPipeline%3D%24true%2C%20ValueFromPipelinebyPropertyName%3D%24true%29%5D%0A%20%20%20%20%20%20%20%20%5BValidateSet%28%22E%22%2C%20%22W%22%2C%20%22I%22%2C%20%22D%22%2C%20%22V%22%29%5D%0A%20%20%20%20%20%20%20%20%5Bstring%5D%0A%20%20%20%20%20%20%20%20%24LOG_LEVEL%20%3D%20%22V%22%2C%0A%0A%20%20%20%20%20%20%20%20%5Bparameter%28Mandatory%3D%24false%2C%20ValueFromPipeline%3D%24true%2C%20ValueFromPipelinebyPropertyName%3D%24true%29%5D%0A%20%20%20%20%20%20%20%20%5Bswitch%5D%24CLEAR_LOG%20%3D%20%24false%0A%20%20%20%20%29%0A%0A%0A%0A%20%20%20%20if%20%28%24CLEAR_LOG%29%20%7B%0A%20%20%20%20%20%20%20%20adb%20-d%20logcat%20-c%0A%20%20%20%20%7D%0A%20%20%20%20%0A%20%20%20%20%24pidStr%20%3D%20%28adb%20shell%20ps%20%7C%20sls%20%24PACKAGE_NAME%29.ToString%28%29.Split%28%22%20%22%2C%20%5BSystem.StringSplitOptions%5D%3A%3ARemoveEmptyEntries%29%5B1%5D%0A%0A%20%20%20%20write%20%22PID%20%3A%20%24pidStr%20start%20logcat%20...%22%0A%20%20%20%20write%20%22%22%0A%20%20%20%20write%20%22%22%0A%20%20%20%20write%20%22%22%0A%0A%20%20%20%20adb%20-d%20logcat%20*%3A%24LOG_LEVEL%20%7C%20sls%20%24pidStr%20%7C%20%0A%20%20%20%20foreach%20%7B%0A%20%20%20%20%20%20%20%20if%20%28%24_%20-match%20%22%24pidStr%5Cs%5Cd*%5CsF%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Write-Host%20%24_%20-ForegroundColor%20Red%0A%20%20%20%20%20%20%20%20%7D%20elseif%20%28%24_%20-match%20%22%24pidStr%5Cs%5Cd*%5CsE%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Write-Host%20%24_%20-ForegroundColor%20Red%0A%20%20%20%20%20%20%20%20%7D%20elseif%20%28%24_%20-match%20%22%24pidStr%5Cs%5Cd*%5CsW%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Write-Host%20%24_%20-ForegroundColor%20Yellow%0A%20%20%20%20%20%20%20%20%7D%20elseif%20%28%24_%20-match%20%22%24pidStr%5Cs%5Cd*%5CsI%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Write-Host%20%24_%20-ForegroundColor%20Green%0A%20%20%20%20%20%20%20%20%7D%20elseif%20%28%24_%20-match%20%22%24pidStr%5Cs%5Cd*%5CsD%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Write-Host%20%24_%20-ForegroundColor%20Gray%0A%20%20%20%20%20%20%20%20%7D%20elseif%20%28%24_%20-match%20%22%24pidStr%5Cs%5Cd*%5CsV%22%29%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Write-Host%20%24_%20-ForegroundColor%20White%0A%20%20%20%20%20%20%20%20%7D%20else%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20Write-Host%20%24_%20-ForegroundColor%20White%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%7D%0A%60%60%60%0A%0A%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A%0A%0A%0A%23%23%20%uC804%uCCB4%uC124%uCE58%0A%0A-%20%60hhdandroid-adb-logcat%60%20%uD568%uC218%20%uC774%uC678%uC5D0%uB3C4%20%uC720%uC6A9%uD55C%20%uC548%uB4DC%uB85C%uC774%uB4DC%20%uD30C%uC6CC%uC258%uBAA8%uB4C8%uB4E4%uC774%20%uC788%uACE0%2C%20%uC804%uCCB4%uC124%uCE58%20%uD558%uB824%uBA74...%0A%09-%20https%3A//github.com/HyundongHwang/hhdps%0A%0A%3Cbr%3E%0A%3Cbr%3E%0A%3Cbr%3E%0A%0A%0A%09%0A%23%23%20%uCD94%uAC00%uC791%uC5C5%0A%0A%uC77C%uB2E8%20%uD604%uC7AC%uB85C%20%uAF2D%20%uD544%uC694%uD55C%20%uAE30%uB2A5%uC740%20%uAD6C%uD604%uB418%uC5C8%uC9C0%uB9CC%20%uC880%uB354%20%uC695%uC2EC%uB0B4%20%uBCF8%uB2E4%uBA74%20...%0A-%20%uB514%uBC14%uC774%uC2A4%20%uC811%uC18D%uC2DC%20%uAE30%uBCF8%uC815%uBCF4%20%uCD9C%uB825%0A%09-%20app%20info%0A%09%09-%20package%20name%0A%09%09-%20file%20path%0A%09%09-%20%uCD5C%uCD08%uC124%uCE58%uC2DC%uAC01%0A%09%09-%20%uCD5C%uADFC%uC0AC%uC6A9%uC2DC%uAC01%20%0A%09%09-%20...%0A%09-%20device%20info%0A%09%09-%20device%20id%0A%09%09-%20%uC81C%uC870%uC0AC%20%uC815%uBCF4%0A%09%09-%20%uD1B5%uC2E0%uC0AC%20%uC815%uBCF4%0A%09%09-%20...%0A%09-%20network%20info%0A%09%09-%20%uB124%uD2B8%uC6CC%uD06C%20%uC0C1%uD0DC%0A%09%09-%20mac%20address%0A%09%09-%20ip%20address%0A%09%09-%20...%0A-%20%uAC01%20%uB85C%uADF8%uB4E4%uC5D0%20threadid%20%uC815%uBCF4%20%uCD94%uAC00%0A-%20...%0A%0A%0A

이 글은 Evernote에서 작성되었습니다. Evernote는 하나의 업무 공간입니다. Evernote를 다운로드하세요.

댓글