hotspot/src/share/vm/logging/log.hpp
changeset 46701 f559541c0daa
parent 38263 a7488329ad27
equal deleted inserted replaced
46700:e097aad8f3f8 46701:f559541c0daa
   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