Restore severity precondition to logging.h.

I mistakenly ommitted the checks when logging.h was ported from
libjingle to webrtc. This caused a significant CPU cost for logs which
were later filtered out anyway.

Verified with LS_VERBOSE logging in neteq4, running:
$ out/Release/modules_unittests \
--gtest_filter=NetEqDecodingTest.TestBitExactness \
--gtest_repeat=50 > time.txt
$ grep "case ran" time.txt | grep "[0-9]* ms" -o | sort

Results on a MacBook Retina, averaged over 5 runs:
Verbose logs disabled:                          666 ms
Exisiting implementation, verbose logs enabled: 944 ms (1.42x)
New implementation, verbose logs enabled:       673 ms (1.01x)

BUG=2314
R=henrik.lundin@webrtc.org, henrike@webrtc.org, kjellander@webrtc.org, turaj@webrtc.org

Review URL: https://webrtc-codereview.appspot.com/2160005

git-svn-id: http://webrtc.googlecode.com/svn/trunk@4682 4adac7df-926f-26a2-2b94-8c16560cd09d
diff --git a/webrtc/system_wrappers/interface/logging.h b/webrtc/system_wrappers/interface/logging.h
index 1b89c23..d3b200e 100644
--- a/webrtc/system_wrappers/interface/logging.h
+++ b/webrtc/system_wrappers/interface/logging.h
@@ -76,6 +76,7 @@
   LogMessage(const char* file, int line, LoggingSeverity sev);
   ~LogMessage();
 
+  static bool Loggable(LoggingSeverity sev);
   std::ostream& stream() { return print_stream_; }
 
  private:
@@ -108,12 +109,19 @@
   void operator&(std::ostream&) { }
 };
 
+#define LOG_SEVERITY_PRECONDITION(sev) \
+  !(webrtc::LogMessage::Loggable(sev)) \
+    ? (void) 0 \
+    : webrtc::LogMessageVoidify() &
+
 #define LOG(sev) \
+  LOG_SEVERITY_PRECONDITION(webrtc::sev) \
     webrtc::LogMessage(__FILE__, __LINE__, webrtc::sev).stream()
 
 // The _V version is for when a variable is passed in.  It doesn't do the
 // namespace concatination.
 #define LOG_V(sev) \
+  LOG_SEVERITY_PRECONDITION(sev) \
     webrtc::LogMessage(__FILE__, __LINE__, sev).stream()
 
 // The _F version prefixes the message with the current function name.