equal
deleted
inserted
replaced
103 // print_stats(out.stream()); |
103 // print_stats(out.stream()); |
104 // } |
104 // } |
105 // |
105 // |
106 #define LogTarget(level, ...) LogTargetImpl<LogLevel::level, LOG_TAGS(__VA_ARGS__)> |
106 #define LogTarget(level, ...) LogTargetImpl<LogLevel::level, LOG_TAGS(__VA_ARGS__)> |
107 |
107 |
108 // Forward declaration to decouple this file from the outputStream API. |
|
109 class outputStream; |
|
110 outputStream* create_log_stream(LogLevelType level, LogTagSet* tagset); |
|
111 |
|
112 template <LogLevelType level, LogTagType T0, LogTagType T1, LogTagType T2, LogTagType T3, LogTagType T4, LogTagType GuardTag> |
108 template <LogLevelType level, LogTagType T0, LogTagType T1, LogTagType T2, LogTagType T3, LogTagType T4, LogTagType GuardTag> |
113 class LogTargetImpl; |
109 class LogTargetImpl; |
114 |
110 |
115 template <LogTagType T0, LogTagType T1 = LogTag::__NO_TAG, LogTagType T2 = LogTag::__NO_TAG, LogTagType T3 = LogTag::__NO_TAG, |
111 template <LogTagType T0, LogTagType T1 = LogTag::__NO_TAG, LogTagType T2 = LogTag::__NO_TAG, LogTagType T3 = LogTag::__NO_TAG, |
116 LogTagType T4 = LogTag::__NO_TAG, LogTagType GuardTag = LogTag::__NO_TAG> |
112 LogTagType T4 = LogTag::__NO_TAG, LogTagType GuardTag = LogTag::__NO_TAG> |
171 return *this; \ |
167 return *this; \ |
172 } \ |
168 } \ |
173 static bool is_##name() { \ |
169 static bool is_##name() { \ |
174 return is_level(LogLevel::level); \ |
170 return is_level(LogLevel::level); \ |
175 } \ |
171 } \ |
176 static outputStream* name##_stream() { \ |
|
177 return create_log_stream(LogLevel::level, &LogTagSetMapping<T0, T1, T2, T3, T4>::tagset()); \ |
|
178 } \ |
|
179 static LogTargetImpl<LogLevel::level, T0, T1, T2, T3, T4, GuardTag>* name() { \ |
172 static LogTargetImpl<LogLevel::level, T0, T1, T2, T3, T4, GuardTag>* name() { \ |
180 return (LogTargetImpl<LogLevel::level, T0, T1, T2, T3, T4, GuardTag>*)NULL; \ |
173 return (LogTargetImpl<LogLevel::level, T0, T1, T2, T3, T4, GuardTag>*)NULL; \ |
181 } |
174 } |
182 LOG_LEVEL_LIST |
175 LOG_LEVEL_LIST |
183 #undef LOG_LEVEL |
176 #undef LOG_LEVEL |
202 va_start(args, fmt); |
195 va_start(args, fmt); |
203 LogImpl<T0, T1, T2, T3, T4, GuardTag>::vwrite(level, fmt, args); |
196 LogImpl<T0, T1, T2, T3, T4, GuardTag>::vwrite(level, fmt, args); |
204 va_end(args); |
197 va_end(args); |
205 } |
198 } |
206 |
199 |
207 static outputStream* stream() { |
|
208 return create_log_stream(level, &LogTagSetMapping<T0, T1, T2, T3, T4>::tagset()); |
|
209 } |
|
210 }; |
200 }; |
211 |
201 |
212 #endif // SHARE_VM_LOGGING_LOG_HPP |
202 #endif // SHARE_VM_LOGGING_LOG_HPP |