생산 단계에서 로거로 인쇄 할 수 있어야하지만 개발 중에는 콘솔로 인쇄하고 싶습니다. 그래서 C++에서 나는 단순히 매크로를 사용할 것이고, 그것은 1 라인의 변경이 될 것입니다. 어떻게 자바에서 그렇게 할 수 있습니까? 감사합니다.자바에서 매크로를 구현하는 방법
답변
그냥 정적 메서드를 정의하고 호출하십시오. 그 방법에서는 디버그 할 때 true
으로 설정된 상수를 넣고 디버깅 여부에 따라 다른 코드를 실행합니다.
일반적으로 인쇄 할 위치를 알 수있는 시스템 속성을 읽는 함수를 작성하십시오.
또는이 특정 경우 log4j를 사용하면 설정 파일에서 이와 같은 내용을 지정할 수 있습니다. http://logging.apache.org/log4j/index.html 또는 http://www.slf4j.org/download.html
매크로에서
자바에는 C/C++과 유사한 매크로가 없으므로 모든 로깅 코드를 자동으로 비활성화하는 쉬운 방법은 없습니다. 생산 빌드에서 프로그램 어디에서든 당신의 이벤트를 기록하려면 즉, 당신은 당신이이 출력을 침묵 할 수
Utility.log("Here's a message!");
를 호출 할 수 있습니다, 지금
public class Utility {
private Utility() {} // Singleton
public static void log(String toLog) {
System.out.println(toLog);
}
/* ... etc. ... */
}
: 당신이 할 수있는 것은이 같은 것입니다 log
의 구현을 no-op로 변경하면됩니다.
이것은 C/C++만큼 효율적이지 않습니다. 단지 로깅 매크로를 컴파일 할 때 아무 것도하지 않아도된다는 것이지만 좋은 옵티 마이저/JIT는 인수가 사용되지 않고 있음을 알 수 있어야합니다. 논리를 최적화하여 이러한 인수를 설정하십시오.
Java는 전처리기를 직접 지원하지 않으므로 매크로를 지원하지 않습니다.
그러나 로깅은 일반적인 요구 사항이므로 선택할 수있는 몇 가지 옵션이 있습니다. 현재 최상의 방법은 slf4j (좋은 코드를 허용하는 {} 구조로)를 적절한 백엔드와 함께 사용하는 것입니다. 우선 slf4j 배포본의 "slf4j-simple"백엔드가 좋다.
slf4j 작성자는 로그백 백엔드를 강력히 선호합니다. 지금은 그럴 필요가 없습니다.
내 대답은 약간 늦었습니다. 4 년! :)
단지 기록을 위해, 매크로를 사용해야 할 경우 컴파일하기 전에 Java 코드를 통해 C++ 전 처리기를 실행하면됩니다. 물론 이것은 C++ 매크로 구문을 사용한다고 가정합니다.
당신이 무엇을 기억하지 않는 경우
는, 프리 프로세서는 #define을 항목을 ... 대체 내가 위의 동의 말했다 - 그것은 어리석은 조금 이럴 있지만 (괜찮은 프레임 워크를 사용 Java에서 매크로를 가지지 않음).- 1. 자바에서 직렬화 구현하는 방법
- 2. Flex/FlashDevelop/AS3에서 매크로를 구현하는 방법
- 3. 자바에서 간단한 그룹화를위한 k- 수단을 구현하는 방법
- 4. C에서 일반 매크로를 구현하는 방법은 무엇입니까?
- 5. 매크로를 사용하여 매크로를 만드시겠습니까?
- 6. 스텐실에서 Visio 매크로를 호출하는 방법
- 7. 우분투에서 CMake 매크로를 사용하는 방법
- 8. FindDevIL cmake 매크로를 사용하는 방법
- 9. 자바에서 멀티 코어를 달성하는 방법?
- 10. 제도 매크로를 구현하는 방법을 배우기위한 좋은 자료는 무엇입니까?
- 11. 자바에서 JSpeex를 사용하는 방법
- 12. 자바에서 시간을 비교하는 방법
- 13. 자바에서 문자열을 처리하는 방법
- 14. 자바에서 패치를 사용하는 방법
- 15. 자바에서 웹에서 이미지를로드하는 방법
- 16. 자바에서 목록을 조작하는 방법
- 17. 자바에서 오류를 확인하는 방법
- 18. 자바에서 프록시를 만드는 방법
- 19. 클래스의 정적 콜렉션을 구현하는 방법
- 20. 자바에서 세마포어
- 21. 자바에서 델리게이트지도
- 22. 자바에서 스파 스 벡터를 구현하는 가장 좋은 방법은 무엇입니까?
- 23. 자바에서 iPhone 용 백엔드/공유 기능을 구현하는 방법은 무엇입니까?
- 24. 매크로를 통해 목차 (TOC)를 만드는 방법
- 25. VBA 매크로를 사용하여 단어 문서에 추가하는 방법
- 26. Word 2003 - 매크로를 사용하여 스타일을 변경하는 방법?
- 27. BDS2006의 C++ WARN & TRACE 매크로를 활성화하는 방법
- 28. xcodebuild - 전 처리기 매크로를 정의하는 방법?
- 29. 단어 매크로를 문자열 매개 변수로 전달하는 방법
- 30. 여러 줄의 코드로 매크로를 만드는 방법?
Java 또는 매크로를 사용하여 로깅을 구현/사용 하시겠습니까? –
Java에는 매크로가 없지만 동적 인 이점이 있습니다. 즉, 런타임시 C++에서 컴파일 타임에 비활성화해야하는 무언가를 효율적으로 비활성화 할 수 있음을 의미합니다. Java는 다양한 옵션을 켜거나 끄기 위해 많은 버전의 코드를 컴파일 할 필요가 없습니다. 실제로 사용되는 방법에 따라 코드를 최적화하여이를 수행 할 수 있습니다. –