19 #ifndef NET_INSTAWEB_HTTP_PUBLIC_LOG_RECORD_H_
20 #define NET_INSTAWEB_HTTP_PUBLIC_LOG_RECORD_H_
24 #include "net/instaweb/util/enums.pb.h"
29 #include "net/instaweb/rewriter/image_types.pb.h"
31 #include "net/instaweb/util/public/gtest_prod.h"
41 namespace net_instaweb {
83 const char* rewriter_id, RewriterApplication::Status status);
88 const char* rewriter_id,
const GoogleString& url,
89 RewriterApplication::Status status) {
97 RewriterHtmlApplication::Status status);
102 const char* rewriter_id, RewriterApplication::Status status);
116 RewriterApplication::Status status,
117 const GoogleString& url,
121 bool is_recompressed,
122 ImageType original_image_type,
123 ImageType optimized_image_type,
127 bool is_resized_using_rendered_dimensions,
137 int page_type,
const GoogleString& cohort,
138 const GoogleString& property) = 0;
143 int page_type,
const GoogleString& cohort,
144 const GoogleString& property) = 0;
148 int page_type,
const GoogleString& cohort,
149 bool found,
int key_state) = 0;
155 void SetCacheHtmlRequestFlow(
int flow);
156 void SetIsOriginalResourceCacheable(
bool cacheable);
167 const GoogleString& url,
168 RewriterApplication::Status status,
169 FlushEarlyResourceInfo::ContentType content_type,
170 FlushEarlyResourceInfo::ResourceType resource_type,
171 bool is_bandwidth_affected,
177 const GoogleString& url,
178 RewriterApplication::Status status,
179 bool is_image_inlined,
180 bool is_critical_image,
181 bool is_url_rewritten,
183 bool try_low_res_src_insertion,
184 bool low_res_src_inserted,
185 ImageType low_res_image_type,
186 int low_res_data_size) = 0;
191 void LogLazyloadFilter(
const char*
id,
192 RewriterApplication::Status status,
193 bool is_blacklisted,
bool is_critical);
201 AbstractMutex*
mutex() {
return mutex_.get(); }
222 virtual void SetImageStats(
int num_img_tags,
int num_inlined_img_tags,
223 int num_critical_images_used) = 0;
230 int original_external_bytes,
236 bool supports_image_inlining,
237 bool supports_lazyload_images,
238 bool supports_critical_images_beacon,
239 bool supports_deferjs,
240 bool supports_webp_in_place,
241 bool supports_webp_rewritten_urls,
242 bool supports_webplossless_alpha,
244 bool supports_split_html,
245 bool can_preload_resources) = 0;
253 bool log_url_indices,
254 int max_rewrite_info_log_size);
273 const char* rewriter_id,
const GoogleString& url,
274 RewriterApplication::Status status);
281 const GoogleString& url, RewriteResourceInfo* rewrite_resource_info);
285 void PopulateRewriterStatusCounts();
289 scoped_ptr<AbstractMutex> mutex_;
292 int rewriter_info_max_size_;
295 bool allow_logging_urls_;
298 bool log_url_indices_;
301 StringIntMap url_index_map_;
304 typedef std::map<RewriterApplication::Status, int> RewriteStatusCountMap;
305 struct RewriterStatsInternal {
306 RewriterHtmlApplication::Status html_status;
309 RewriteStatusCountMap status_counts;
311 RewriterStatsInternal()
312 : html_status(RewriterHtmlApplication::UNKNOWN_STATUS) {}
314 typedef std::map<GoogleString, RewriterStatsInternal> RewriterStatsMap;
315 RewriterStatsMap rewriter_stats_;
330 int num_critical_images_used) {}
335 int page_type,
const GoogleString& cohort,
336 const GoogleString& property) {}
339 int page_type,
const GoogleString& cohort,
340 const GoogleString& property) {}
343 int page_type,
const GoogleString& cohort,
bool found,
int key_state) {}
347 const GoogleString& url,
348 RewriterApplication::Status status,
349 bool is_image_inlined,
350 bool is_critical_image,
351 bool is_url_rewritten,
353 bool try_low_res_src_insertion,
354 bool low_res_src_inserted,
355 ImageType low_res_image_type,
356 int low_res_data_size) {}
360 bool supports_image_inlining,
361 bool supports_lazyload_images,
362 bool supports_critical_images_beacon,
363 bool supports_deferjs,
364 bool supports_webp_in_place,
365 bool supports_webp_rewritten_urls,
366 bool supports_webplossless_alpha,
368 bool supports_split_html,
369 bool can_preload_resources) {}
374 scoped_ptr<LoggingInfo> logging_info_;
386 :
LogRecord(logging_mutex), logging_info_copy_(logging_info) {}
395 LoggingInfo* logging_info_copy_;
void SetRewriterLoggingStatus(const char *rewriter_id, RewriterApplication::Status status)
Definition: request_context.h:221
void SetCacheHtmlLoggingInfo(const GoogleString &user_agent)
Override SetCacheHtmlInfoImpl if necessary.
void LogImageBackgroundRewriteActivity(RewriterApplication::Status status, const GoogleString &url, const char *id, int original_size, int optimized_size, bool is_recompressed, ImageType original_image_type, ImageType optimized_image_type, bool is_resized, int original_width, int original_height, bool is_resized_using_rendered_dimensions, int resized_width, int resized_height)
void LogRewriterHtmlStatus(const char *rewriter_id, RewriterHtmlApplication::Status status)
virtual void LogDeviceInfo(int device_type, bool supports_image_inlining, bool supports_lazyload_images, bool supports_critical_images_beacon, bool supports_deferjs, bool supports_webp_in_place, bool supports_webp_rewritten_urls, bool supports_webplossless_alpha, bool is_bot, bool supports_split_html, bool can_preload_resources)=0
Log information related to the user agent and device making the request.
Simple AbstractLogRecord implementation which owns a LoggingInfo protobuf.
Definition: log_record.h:321
virtual void AddFoundPropertyToCohortInfo(int page_type, const GoogleString &cohort, const GoogleString &property)=0
RewriterInfo * NewRewriterInfo(const char *rewriter_id)
void SetAllowLoggingUrls(bool allow_logging_urls)
void SetIsHtml(bool is_html)
Atomically sets is_html_response in the logging proto.
virtual void SetCacheHtmlLoggingInfoImpl(const GoogleString &user_agent)
Implements setting Cache Html specific log information.
Definition: log_record.h:264
void LogJsDisableFilter(const char *id, bool has_pagespeed_no_defer)
Definition: log_record.h:61
void SetLogUrlIndices(bool log_url_indices)
void SetRewriterLoggingStatus(const char *rewriter_id, const GoogleString &url, RewriterApplication::Status status)
Definition: log_record.h:87
virtual void SetResourceCounts(int num_external_css, int num_scripts)
Sets the number of external resources on an HTML page.
Definition: log_record.h:332
virtual void AddRetrievedPropertyToCohortInfo(int page_type, const GoogleString &cohort, const GoogleString &property)
Definition: log_record.h:338
virtual bool WriteLogImpl()
Definition: log_record.h:389
void SetBlinkInfo(const GoogleString &user_agent)
Override SetBlinkInfoImpl if necessary.
virtual void SetBlinkInfoImpl(const GoogleString &user_agent)
Implements setting Blink specific log information; base impl is a no-op.
Definition: log_record.h:261
virtual void LogImageRewriteActivity(const char *id, const GoogleString &url, RewriterApplication::Status status, bool is_image_inlined, bool is_critical_image, bool is_url_rewritten, int size, bool try_low_res_src_insertion, bool low_res_src_inserted, ImageType low_res_image_type, int low_res_data_size)=0
Log a RewriterInfo for the image rewrite filter.
virtual void SetResourceCounts(int num_external_css, int num_scripts)=0
Sets the number of external resources on an HTML page.
virtual void SetCacheStatusForCohortInfo(int page_type, const GoogleString &cohort, bool found, int key_state)=0
Updates the cohort info to update the cache key state.
GoogleString AppliedRewritersString()
void SetCriticalCssInfo(int critical_inlined_bytes, int original_external_bytes, int overhead_bytes)
Sets critical CSS related byte counts (all uncompressed).
AbstractMutex * mutex()
Definition: log_record.h:201
virtual void AddFoundPropertyToCohortInfo(int page_type, const GoogleString &cohort, const GoogleString &property)
Definition: log_record.h:334
virtual LoggingInfo * logging_info()=0
void SetNumCssCriticalImages(int num_css_critical_images)
Sets the number of critical images in CSS.
virtual void SetImageStats(int num_img_tags, int num_inlined_img_tags, int num_critical_images_used)=0
Sets image related statistics.
void SetBlinkRequestFlow(int flow)
virtual void SetTimingInfo(const RequestContext::TimingInfo &timing_info)
Set timing information in the logging implementation.
Definition: log_record.h:257
void SetRewriterInfoMaxSize(int x)
virtual void LogDeviceInfo(int device_type, bool supports_image_inlining, bool supports_lazyload_images, bool supports_critical_images_beacon, bool supports_deferjs, bool supports_webp_in_place, bool supports_webp_rewritten_urls, bool supports_webplossless_alpha, bool is_bot, bool supports_split_html, bool can_preload_resources)
Log information related to the user agent and device making the request.
Definition: log_record.h:358
virtual void SetImageStats(int num_img_tags, int num_inlined_img_tags, int num_critical_images_used)
Sets image related statistics.
Definition: log_record.h:329
virtual bool WriteLogImpl()=0
bool WriteLogImpl()
Definition: log_record.h:371
void LogIsXhr(bool is_xhr)
Log whether the request is an XmlHttpRequest.
void SetNumHtmlCriticalImages(int num_html_critical_images)
Sets the number of critical images in HTML.
void LogFlushEarlyActivity(const char *id, const GoogleString &url, RewriterApplication::Status status, FlushEarlyResourceInfo::ContentType content_type, FlushEarlyResourceInfo::ResourceType resource_type, bool is_bandwidth_affected, bool in_head)
Log a RewriterInfo for the flush early filter.
void LogRewriterApplicationStatus(const char *rewriter_id, RewriterApplication::Status status)
virtual void AddRetrievedPropertyToCohortInfo(int page_type, const GoogleString &cohort, const GoogleString &property)=0
LoggingInfo * logging_info()
Definition: log_record.h:327
AbstractLogRecord(AbstractMutex *mutex)
Definition: log_record.h:383
virtual void LogImageRewriteActivity(const char *id, const GoogleString &url, RewriterApplication::Status status, bool is_image_inlined, bool is_critical_image, bool is_url_rewritten, int size, bool try_low_res_src_insertion, bool low_res_src_inserted, ImageType low_res_image_type, int low_res_data_size)
Log a RewriterInfo for the image rewrite filter.
Definition: log_record.h:345
RewriterInfo * SetRewriterLoggingStatusHelper(const char *rewriter_id, const GoogleString &url, RewriterApplication::Status status)
void SetCacheStatusForCohortInfo(int page_type, const GoogleString &cohort, bool found, int key_state)
Updates the cohort info to update the cache key state.
Definition: log_record.h:342
virtual void SetBackgroundRewriteInfo(bool log_urls, bool log_url_indices, int max_rewrite_info_log_size)
Sets initial information for background rewrite log.