78 LogTargetHandle(const LogTargetImpl<level, T0, T1, T2, T3, T4, GuardTag>& type_carrier) :
79 _level(level),
80 _tagset(&LogTagSetMapping<T0, T1, T2, T3, T4>::tagset()) {}
81
82 template <LogLevelType level, LogTagType T0, LogTagType T1, LogTagType T2, LogTagType T3, LogTagType T4, LogTagType GuardTag>
83 static LogTargetHandle create() {
84 return LogTargetHandle(LogTargetImpl<level, T0, T1, T2, T3, T4, GuardTag>());
85 }
86
87 void print(const char* fmt, ...) ATTRIBUTE_PRINTF(2, 3) {
88 va_list args;
89 va_start(args, fmt);
90 _tagset->vwrite(_level, fmt, args);
91 va_end(args);
92 }
93
94 bool is_enabled() const {
95 return _tagset->is_level(_level);
96 }
97
98 // Creates a log stream from the information stored in this instance.
99 // Callers need a ResourceMark on the stack.
100 outputStream* stream() {
101 return create_log_stream(_level, _tagset);;
102 }
103 };
104
105 #endif // SHARE_VM_LOGGING_LOGHANDLE_HPP
|
78 LogTargetHandle(const LogTargetImpl<level, T0, T1, T2, T3, T4, GuardTag>& type_carrier) :
79 _level(level),
80 _tagset(&LogTagSetMapping<T0, T1, T2, T3, T4>::tagset()) {}
81
82 template <LogLevelType level, LogTagType T0, LogTagType T1, LogTagType T2, LogTagType T3, LogTagType T4, LogTagType GuardTag>
83 static LogTargetHandle create() {
84 return LogTargetHandle(LogTargetImpl<level, T0, T1, T2, T3, T4, GuardTag>());
85 }
86
87 void print(const char* fmt, ...) ATTRIBUTE_PRINTF(2, 3) {
88 va_list args;
89 va_start(args, fmt);
90 _tagset->vwrite(_level, fmt, args);
91 va_end(args);
92 }
93
94 bool is_enabled() const {
95 return _tagset->is_level(_level);
96 }
97
98 };
99
100 #endif // SHARE_VM_LOGGING_LOGHANDLE_HPP
|