다음을 통해 공유


Logger 클래스

정의

로거 개체는 특정 시스템 또는 애플리케이션 구성 요소에 대한 메시지를 기록하는 데 사용됩니다.

[Android.Runtime.Register("java/util/logging/Logger", DoNotGenerateAcw=true)]
public class Logger : Java.Lang.Object
[<Android.Runtime.Register("java/util/logging/Logger", DoNotGenerateAcw=true)>]
type Logger = class
    inherit Object
상속
Logger
특성

설명

로거 개체는 특정 시스템 또는 애플리케이션 구성 요소에 대한 메시지를 기록하는 데 사용됩니다. 로거는 일반적으로 계층적 점으로 구분된 네임스페이스를 사용하여 이름이 지정됩니다. 로거 이름은 임의의 문자열일 수 있지만 일반적으로 java.net 또는 javax.swing과 같이 기록된 구성 요소의 패키지 이름 또는 클래스 이름을 기반으로 해야 합니다. 또한 로거 네임스페이스에 저장되지 않은 "익명" 로거를 만들 수 있습니다.

getLogger 팩터리 메서드 중 하나에 대한 호출을 통해 로거 개체를 가져올 수 있습니다. 새 로거를 만들거나 적절한 기존 로거를 반환합니다. 로거에 대한 강력한 참조가 유지되지 않는 경우 팩터리 메서드 중 getLogger 하나에서 반환된 로거는 언제든지 가비지 수집될 수 있습니다.

로깅 메시지는 등록된 처리기 개체로 전달되며, 이 개체는 콘솔, 파일, OS 로그 등을 비롯한 다양한 대상으로 메시지를 전달할 수 있습니다.

각 로거는 로거 네임스페이스에서 가장 가까운 기존 상위 항목인 "부모" 로거를 추적합니다.

각 로거에는 연결된 "수준"이 있습니다. 이는 이 로거가 관심 있는 최소 수준을 반영합니다. 로거 수준이 설정된 null경우 해당 유효 수준은 부모로부터 상속되며, 이로 인해 부모 수준에서 재귀적으로 가져올 수 있으며 트리 위로 올라갈 수 있습니다.

LogManager 클래스에 대한 설명에 설명된 대로 로깅 구성 파일의 속성에 따라 로그 수준을 구성할 수 있습니다. 그러나 Logger.setLevel 메서드의 호출에 의해 동적으로 변경될 수도 있습니다. 로거 수준이 변경되면 해당 수준인 자식 로거가 부모로부터 유효 수준을 상속하므로 변경 내용이 null 자식 로거에도 영향을 줄 수 있습니다.

각 로깅 호출에서 로거는 처음에 로거의 유효 로그 수준에 대해 요청 수준(예: SEVERE 또는 FINE)을 저렴하게 확인합니다. 요청 수준이 로그 수준보다 낮으면 로깅 호출이 즉시 반환됩니다.

이 초기(저렴한) 테스트를 통과한 후 로거는 LogRecord를 할당하여 로깅 메시지를 설명합니다. 그런 다음 필터(있는 경우)를 호출하여 레코드를 게시해야 하는지 여부를 보다 자세히 확인합니다. 이를 통과하면 LogRecord를 출력 처리기에 게시합니다. 기본적으로 로거는 트리를 재귀적으로 상위 처리기에 게시합니다.

각 로거에는 연결된 로거가 ResourceBundle 있을 수 있습니다. 메서드 ResourceBundle 를 사용하여 #getLogger(java.lang.String, java.lang.String)#setResourceBundle(java.util.ResourceBundle) setResourceBundle 이름, 팩터리 메서드 또는 값으로 지정할 수 있습니다. 이 번들은 로깅 메시지를 지역화하는 데 사용됩니다. 로거에 자체 ResourceBundle 또는 리소스 번들 이름이 없는 경우 부모로부터 리소스 번들 이름을 상속 ResourceBundle 하고 트리를 재귀적으로 올림합니다.

대부분의 로거 출력 메서드는 "msg" 인수를 사용합니다. 이 msg 인수는 원시 값 또는 지역화 키일 수 있습니다. 서식 지정 중에 로거에 지역화 ResourceBundle (또는 상속)가 있고 msg 문자열에 대한 매핑이 있는 경우 ResourceBundle msg 문자열이 지역화된 값으로 바뀝니다. 그렇지 않으면 원래 msg 문자열이 사용됩니다. 일반적으로 포맷터는 java.text.MessageFormat 스타일 서식을 사용하여 매개 변수의 서식을 지정하므로 예를 들어 형식 문자열 "{0}{1}"은 두 매개 변수의 서식을 문자열로 지정합니다.

메서드 집합은 "msg" 인수 대신 "msgSupplier"를 사용합니다. 이러한 메서드는 유효한 로그 수준에 따라 메시지를 실제로 기록해야만 원하는 로그 메시지를 생성하기 위해 호출되는 함수를 사용 Supplier<String> 하므로 불필요한 메시지 생성이 제거됩니다. 예를 들어 개발자가 진단에 대한 시스템 상태를 기록하려는 경우 문자열 허용 버전을 사용하여 코드는 다음과 같습니다.

<code>

               class DiagnosisMessages {
                 static String systemHealthStatus() {
                   // collect system health information
                   ...
                 }
               }
               ...
               logger.log(Level.FINER, DiagnosisMessages.systemHealthStatus());
</code>

위의 코드를 사용하면 로그 수준 FINER이 비활성화된 경우에도 상태가 불필요하게 수집됩니다. 아래와 같이 Supplier 수락 버전을 사용하면 로그 수준 FINER을 사용하도록 설정한 경우에만 상태가 수집됩니다.

<code>

               logger.log(Level.FINER, DiagnosisMessages::systemHealthStatus);
</code>

ResourceBundle거는 먼저 번들을 사용하여 #setResourceBundle(java.util.ResourceBundle) setResourceBundle지정했는지 여부를 확인하고 팩터리 메서드를 통해 #getLogger(java.lang.String, java.lang.String) getLogger 리소스 번들 이름을 지정했는지 여부만 확인합니다. 리소스 번들 이름이 없거나 ResourceBundle 없는 경우 부모 트리에서 상속된 가장 ResourceBundle 가까운 또는 리소스 번들 이름을 사용합니다.<br> 메서드를 ResourceBundle 통해 #setResourceBundle(java.util.ResourceBundle) setResourceBundle 상속되거나 지정되면 해당 메서드가 ResourceBundle 사용됩니다. 그렇지 않으면 로거에 리소스 번들 이름만 있거나 상속된 경우 로깅 시 기본 로캘을 사용하여 해당 리소스 번들 이름이 개체에 매핑 ResourceBundle 됩니다. <br id="ResourceBundleMapping">리소스 번들 이름을 개체에 매핑할 ResourceBundle 때 로거는 먼저 Thread의 java.lang.Thread#getContextClassLoader() 컨텍스트 클래스 로더를 사용하여 지정된 리소스 번들 이름을 매핑합니다 ResourceBundle. 스레드 컨텍스트 클래스 로더인 null경우 java.lang.ClassLoader#getSystemClassLoader() 시스템 클래스 로더를 대신 시도합니다. ResourceBundle 아직 찾을 수 없는 경우 팩터리 메서드의 첫 번째 호출자의 클래스 로더를 #getLogger(java.lang.String, java.lang.String) getLogger 사용합니다.

서식 지정(지역화 포함)은 일반적으로 Formatter를 호출하는 출력 처리기의 책임입니다.

서식 지정은 동기적으로 수행되지 않아도 됩니다. LogRecord가 실제로 외부 싱크에 기록될 때까지 지연될 수 있습니다.

로깅 메서드는 ul><li라는 다섯 가지 주요 범주<로 그룹화됩니다.>

로그 수준, 메시지 문자열 및 선택적으로 메시지 문자열에 대한 일부 매개 변수를 사용하는 "log" 메서드 집합이 있습니다. <리>

"log" 메서드와 비슷하지만 명시적 소스 클래스 이름 및 메서드 이름을 사용하는 "logp" 메서드 집합("로그 정밀")이 있습니다. <리>

"logp" 메서드와 비슷하지만 로그 메시지를 지역화하는 데 사용할 명시적 리소스 번들 개체를 사용하는 "logrb" 메서드 집합("리소스 번들로 로그")이 있습니다. <리>

메서드 항목 추적("enter" 메서드), 메서드 반환("종료" 메서드) 및 예외("throwing" 메서드)를 throw하기 위한 편리한 메서드가 있습니다. <리>

마지막으로 개발자가 지정된 로그 수준에서 간단한 문자열을 기록하려고 할 때 가장 간단한 경우에 사용하기 위한 편리한 방법 집합이 있습니다. 이러한 메서드는 표준 수준 이름("심각", "경고", "정보" 등)의 이름을 따서 명명되며 단일 인수인 메시지 문자열을 사용합니다. </ul>

명시적 원본 이름 및 메서드 이름을 사용하지 않는 메서드의 경우 로깅 프레임워크는 로깅 메서드에 호출된 클래스와 메서드를 결정하기 위해 "최선의 노력"을 수행합니다. 그러나 이 자동 유추 정보는 근사값(또는 매우 잘못된 정보일 수도 있음)일 수 있다는 사실을 깨닫는 것이 중요합니다. 가상 머신은 JITing 시 광범위한 최적화를 수행할 수 있으며 스택 프레임을 완전히 제거할 수 있으므로 호출 클래스 및 메서드를 안정적으로 찾을 수 없습니다.

로거의 모든 메서드는 다중 스레드로부터 안전합니다.

<b>서브클래싱 정보:</b> LogManager 클래스는 네임스페이스의 모든 지점에 대해 명명된 로거의 고유한 구현을 제공할 수 있습니다. 따라서 모든 로거 하위 클래스(새 LogManager 클래스와 함께 구현되지 않는 한)는 LogManager 클래스에서 로거 인스턴스를 가져오기 위해 주의해야 하며 " isLoggable" 및 "log(LogRecord)"와 같은 작업을 해당 인스턴스에 위임해야 합니다. 모든 로깅 출력을 가로채려면 하위 클래스가 log(LogRecord) 메서드만 재정의하면 됩니다. 다른 모든 로깅 메서드는 이 log(LogRecord) 메서드에 대한 호출로 구현됩니다.

1.4에 추가되었습니다.

에 대한 java.util.logging.LoggerJava 설명서

이 페이지의 일부는 Android 오픈 소스 프로젝트에서 만들고 공유하고 Creative Commons 2.5 특성 라이선스에 설명된 용어에 따라 사용되는 작업을 기반으로 하는 수정 사항입니다.

생성자

Logger(IntPtr, JniHandleOwnership)

JNI 개체의 관리되는 표현을 만들 때 사용되는 생성자입니다. 런타임에서 호출합니다.

Logger(String, String)

명명된 하위 시스템에 대한 로거를 생성하는 보호된 메서드입니다.

필드

GlobalLoggerName

GLOBAL_LOGGER_NAME 전역 로거의 이름입니다.

속성

AnonymousLogger

익명 로거를 만듭니다.

Class

Object런타임 클래스를 반환합니다.

(다음에서 상속됨 Object)
Filter

이 로거에 대한 현재 필터를 가져옵니다. -또는- 이 로거의 출력을 제어하도록 필터를 설정합니다.

Global

로거라는 이름의 전역 로거 개체를 반환합니다.

Handle

기본 Android 인스턴스에 대한 핸들입니다.

(다음에서 상속됨 Object)
JniIdentityHashCode

로거 개체는 특정 시스템 또는 애플리케이션 구성 요소에 대한 메시지를 기록하는 데 사용됩니다.

(다음에서 상속됨 Object)
JniPeerMembers

로거 개체는 특정 시스템 또는 애플리케이션 구성 요소에 대한 메시지를 기록하는 데 사용됩니다.

Level

이 로거에 대해 지정된 로그 수준을 가져옵니다. -또는- 이 로거가 기록할 메시지 수준을 지정하는 로그 수준을 설정합니다.

Name

이 로거의 이름을 가져옵니다.

Parent

이 로거에 대한 부모를 반환합니다. -또는- 이 로거에 대한 부모를 설정합니다.

PeerReference

로거 개체는 특정 시스템 또는 애플리케이션 구성 요소에 대한 메시지를 기록하는 데 사용됩니다.

(다음에서 상속됨 Object)
ResourceBundle

이 로거에 대한 지역화 리소스 번들을 검색합니다. -또는- 이 로거에서 리소스 번들을 설정합니다.

ResourceBundleName

이 로거에 대한 지역화 리소스 번들 이름을 검색합니다.

ThresholdClass

이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.

ThresholdType

이 API는 Android용 Mono 인프라를 지원하며 코드에서 직접 사용할 수 없습니다.

UseParentHandlers

이 로거가 해당 출력을 부모 로거로 보내는지 여부를 검색합니다. -또는- 이 로거가 해당 출력을 부모 로거로 보내야 하는지 여부를 지정합니다.

메서드

AddHandler(Handler)

로깅 메시지를 수신하는 로그 처리기를 추가합니다.

Clone()

이 개체의 복사본을 만들고 반환합니다.

(다음에서 상속됨 Object)
Config(ISupplier)

로깅 수준이 메시지가 실제로 기록되도록 하는 경우에만 생성되는 CONFIG 메시지를 기록합니다.

Config(String)

CONFIG 메시지를 기록합니다.

Dispose()

로거 개체는 특정 시스템 또는 애플리케이션 구성 요소에 대한 메시지를 기록하는 데 사용됩니다.

(다음에서 상속됨 Object)
Dispose(Boolean)

로거 개체는 특정 시스템 또는 애플리케이션 구성 요소에 대한 메시지를 기록하는 데 사용됩니다.

(다음에서 상속됨 Object)
Entering(String, String)

메서드 항목을 기록합니다.

Entering(String, String, Object)

하나의 매개 변수를 사용하여 메서드 항목을 기록합니다.

Entering(String, String, Object[])

매개 변수 배열을 사용하여 메서드 항목을 기록합니다.

Equals(Object)

다른 개체가 이 개체와 "같음"인지 여부를 나타냅니다.

(다음에서 상속됨 Object)
Exiting(String, String)

메서드 반환을 기록합니다.

Exiting(String, String, Object)

결과 개체를 사용하여 메서드 반환을 기록합니다.

Fine(ISupplier)

로깅 수준이 메시지가 실제로 기록되도록 하는 경우에만 생성되는 FINE 메시지를 기록합니다.

Fine(String)

FINE 메시지를 기록합니다.

Finer(ISupplier)

로깅 수준이 메시지가 실제로 기록되도록 하는 경우에만 생성되는 FINER 메시지를 기록합니다.

Finer(String)

FINER 메시지를 기록합니다.

Finest(ISupplier)

로깅 수준이 메시지가 실제로 기록되도록 하는 경우에만 생성되는 FINEST 메시지를 기록합니다.

Finest(String)

FINEST 메시지를 기록합니다.

GetAnonymousLogger(String)

익명 로거를 만듭니다.

GetHandlers()

이 로거와 연결된 처리기를 가져옵니다.

GetHashCode()

개체에 대한 해시 코드 값을 반환합니다.

(다음에서 상속됨 Object)
GetLogger(String)

명명된 하위 시스템에 대한 로거를 찾거나 만듭니다.

GetLogger(String, String)

명명된 하위 시스템에 대한 로거를 찾거나 만듭니다.

Info(ISupplier)

로깅 수준이 메시지가 실제로 기록되도록 하는 경우에만 생성되는 INFO 메시지를 기록합니다.

Info(String)

INFO 메시지를 기록합니다.

IsLoggable(Level)

지정된 수준의 메시지가 실제로 이 로거에 의해 기록되는지 확인합니다.

JavaFinalize()

가비지 수집에서 개체에 대한 참조가 더 이상 없다고 판단할 때 개체의 가비지 수집기에서 호출됩니다.

(다음에서 상속됨 Object)
Log(Level, ISupplier)

로깅 수준이 메시지가 실제로 기록되도록 하는 경우에만 생성되는 메시지를 기록합니다.

Log(Level, String)

인수 없이 메시지를 기록합니다.

Log(Level, String, Object)

하나의 개체 매개 변수를 사용하여 메시지를 기록합니다.

Log(Level, String, Object[])

개체 인수 배열을 사용하여 메시지를 기록합니다.

Log(Level, String, Throwable)

연결된 Throw 가능 정보를 사용하여 메시지를 기록합니다.

Log(Level, Throwable, ISupplier)

연결된 Throw 가능 정보와 함께 지연 생성 메시지를 기록합니다.

Log(LogRecord)

LogRecord를 기록합니다.

Logp(Level, String, String, ISupplier)

인수 없이 소스 클래스 및 메서드를 지정하여 지연 생성 메시지를 기록합니다.

Logp(Level, String, String, String)

인수 없이 소스 클래스 및 메서드를 지정하는 메시지를 기록합니다.

Logp(Level, String, String, String, Object)

로그 메시지에 단일 개체 매개 변수를 사용하여 원본 클래스 및 메서드를 지정하는 메시지를 기록합니다.

Logp(Level, String, String, String, Object[])

개체 인수 배열을 사용하여 소스 클래스 및 메서드를 지정하는 메시지를 기록합니다.

Logp(Level, String, String, String, Throwable)

원본 클래스 및 메서드를 지정하는 메시지를 연결된 Throw 가능 정보와 함께 기록합니다.

Logp(Level, String, String, Throwable, ISupplier)

소스 클래스 및 메서드를 지정하는 지연 생성 메시지를 관련 Throw 가능 정보와 함께 기록합니다.

Logrb(Level, String, String, ResourceBundle, String, Object[])

인수 없이 원본 클래스, 메서드 및 리소스 번들 이름을 지정하여 메시지를 기록합니다.

Logrb(Level, String, String, ResourceBundle, String, Throwable)

원본 클래스, 메서드 및 리소스 번들을 지정하는 메시지를 관련 Throw 가능 정보와 함께 기록합니다.

Logrb(Level, String, String, String, String)

인수 없이 원본 클래스, 메서드 및 리소스 번들 이름을 지정하여 메시지를 기록합니다.

Logrb(Level, String, String, String, String, Object)

로그 메시지에 단일 개체 매개 변수를 사용하여 원본 클래스, 메서드 및 리소스 번들 이름을 지정하는 메시지를 기록합니다.

Logrb(Level, String, String, String, String, Object[])

개체 인수 배열을 사용하여 원본 클래스, 메서드 및 리소스 번들 이름을 지정하는 메시지를 기록합니다.

Logrb(Level, String, String, String, String, Throwable)

원본 클래스, 메서드 및 리소스 번들 이름을 지정하는 메시지를 Throw 가능한 관련 정보와 함께 기록합니다.

Notify()

이 개체의 모니터에서 대기 중인 단일 스레드를 해제합니다.

(다음에서 상속됨 Object)
NotifyAll()

이 개체의 모니터에서 대기 중인 모든 스레드를 해제합니다.

(다음에서 상속됨 Object)
RemoveHandler(Handler)

로그 처리기를 제거합니다.

SetHandle(IntPtr, JniHandleOwnership)

Handle 속성을 설정합니다.

(다음에서 상속됨 Object)
Severe(ISupplier)

심각한 메시지를 기록합니다. 이는 로깅 수준이 메시지가 실제로 기록되도록 하는 경우에만 생성됩니다.

Severe(String)

심각한 메시지를 기록합니다.

Throwing(String, String, Throwable)

예외를 throw하는 로그입니다.

ToArray<T>()

로거 개체는 특정 시스템 또는 애플리케이션 구성 요소에 대한 메시지를 기록하는 데 사용됩니다.

(다음에서 상속됨 Object)
ToString()

개체의 문자열 표현을 반환합니다.

(다음에서 상속됨 Object)
UnregisterFromRuntime()

로거 개체는 특정 시스템 또는 애플리케이션 구성 요소에 대한 메시지를 기록하는 데 사용됩니다.

(다음에서 상속됨 Object)
Wait()

현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <알림을 받<>거나 <><중단/종료>합니다.>

(다음에서 상속됨 Object)
Wait(Int64)

현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <>알림을 받<거나 <중단/>종료><>하거나 일정량의 실시간 경과가 발생할 때까지 대기합니다.

(다음에서 상속됨 Object)
Wait(Int64, Int32)

현재 스레드가 각성될 때까지 대기하게 하며, 일반적으로 <>알림을 받<거나 <중단/>종료><>하거나 일정량의 실시간 경과가 발생할 때까지 대기합니다.

(다음에서 상속됨 Object)
Warning(ISupplier)

로깅 수준이 메시지가 실제로 기록되도록 하는 경우에만 생성되는 경고 메시지를 기록합니다.

Warning(String)

경고 메시지를 기록합니다.

명시적 인터페이스 구현

IJavaPeerable.Disposed()

로거 개체는 특정 시스템 또는 애플리케이션 구성 요소에 대한 메시지를 기록하는 데 사용됩니다.

(다음에서 상속됨 Object)
IJavaPeerable.DisposeUnlessReferenced()

로거 개체는 특정 시스템 또는 애플리케이션 구성 요소에 대한 메시지를 기록하는 데 사용됩니다.

(다음에서 상속됨 Object)
IJavaPeerable.Finalized()

로거 개체는 특정 시스템 또는 애플리케이션 구성 요소에 대한 메시지를 기록하는 데 사용됩니다.

(다음에서 상속됨 Object)
IJavaPeerable.JniManagedPeerState

로거 개체는 특정 시스템 또는 애플리케이션 구성 요소에 대한 메시지를 기록하는 데 사용됩니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetJniIdentityHashCode(Int32)

로거 개체는 특정 시스템 또는 애플리케이션 구성 요소에 대한 메시지를 기록하는 데 사용됩니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetJniManagedPeerState(JniManagedPeerStates)

로거 개체는 특정 시스템 또는 애플리케이션 구성 요소에 대한 메시지를 기록하는 데 사용됩니다.

(다음에서 상속됨 Object)
IJavaPeerable.SetPeerReference(JniObjectReference)

로거 개체는 특정 시스템 또는 애플리케이션 구성 요소에 대한 메시지를 기록하는 데 사용됩니다.

(다음에서 상속됨 Object)

확장 메서드

JavaCast<TResult>(IJavaObject)

Android 런타임 확인 형식 변환을 수행합니다.

JavaCast<TResult>(IJavaObject)

로거 개체는 특정 시스템 또는 애플리케이션 구성 요소에 대한 메시지를 기록하는 데 사용됩니다.

GetJniTypeName(IJavaPeerable)

로거 개체는 특정 시스템 또는 애플리케이션 구성 요소에 대한 메시지를 기록하는 데 사용됩니다.

적용 대상