Page Speed Optimization Libraries  1.5.27.2
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
Classes | Public Member Functions | Protected Member Functions
net_instaweb::AbstractLogRecord Class Reference

#include "log_record.h"

Inheritance diagram for net_instaweb::AbstractLogRecord:
net_instaweb::LogRecord net_instaweb::CopyOnWriteLogRecord

List of all members.

Classes

struct  RewriterStatsInternal

Public Member Functions

 AbstractLogRecord (AbstractMutex *mutex)
GoogleString AppliedRewritersString ()
RewriterInfo * NewRewriterInfo (const char *rewriter_id)
void SetRewriterLoggingStatus (const char *rewriter_id, RewriterApplication::Status status)
void SetRewriterLoggingStatus (const char *rewriter_id, const GoogleString &url, RewriterApplication::Status status)
void LogRewriterHtmlStatus (const char *rewriter_id, RewriterHtmlApplication::Status status)
void LogRewriterApplicationStatus (const char *rewriter_id, RewriterApplication::Status status)
virtual LoggingInfo * logging_info ()=0
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)
void SetIsHtml (bool is_html)
 Atomically sets is_html_response in the logging proto.
int AddPropertyCohortInfo (const GoogleString &cohort)
 Adds a new cohort info with the given cohort name and returns its index.
void AddFoundPropertyToCohortInfo (int index, const GoogleString &property)
void SetCacheStatusForCohortInfo (int index, bool found, int key_state)
void SetDeviceAndCacheTypeForCohortInfo (int index, int device_type, int cache_type)
void SetBlinkRequestFlow (int flow)
void SetCacheHtmlRequestFlow (int flow)
void SetIsOriginalResourceCacheable (bool cacheable)
void SetBlinkInfo (const GoogleString &user_agent)
 Override SetBlinkInfoImpl if necessary.
void SetCacheHtmlLoggingInfo (const GoogleString &user_agent)
 Override SetCacheHtmlInfoImpl if necessary.
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 LogImageRewriteActivity (const char *id, const GoogleString &url, RewriterApplication::Status status, bool is_image_inlined, bool is_critical_image, bool try_low_res_src_insertion, bool low_res_src_inserted, int low_res_data_size)
 Log a RewriterInfo for the image rewrite filter.
void LogJsDisableFilter (const char *id, bool has_pagespeed_no_defer)
void LogLazyloadFilter (const char *id, RewriterApplication::Status status, bool is_blacklisted, bool is_critical)
bool WriteLog ()
AbstractMutexmutex ()
void SetRewriterInfoMaxSize (int x)
void SetAllowLoggingUrls (bool allow_logging_urls)
void SetLogUrlIndices (bool log_url_indices)
void SetNumHtmlCriticalImages (int num_html_critical_images)
 Sets the number of critical images in HTML.
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.
virtual void SetResourceCounts (int num_external_css, int num_scripts)=0
 Sets the number of external resources on an HTML page.
void SetCriticalCssInfo (int critical_inlined_bytes, int original_external_bytes, int overhead_bytes)
 Sets critical CSS related byte counts (all uncompressed).
void LogDeviceInfo (int device_type, bool supports_image_inlining, bool supports_lazyload_images, bool supports_critical_images_beacon, bool supports_deferjs, bool supports_webp, 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.
void LogIsXhr (bool is_xhr)
 Log whether the request is an XmlHttpRequest.
virtual void SetBackgroundRewriteInfo (bool log_urls, bool log_url_indices, int max_rewrite_info_log_size)
 Sets initial information for background rewrite log.
void SetTimeToStartProcessing (int64 end_ms)
void SetTimeToStartParse (int64 end_ms)
 Sets the time from the start of the request till the start of parsing.
void SetTimeToPcacheStart (int64 end_ms)
void SetTimeToPcacheEnd (int64 end_ms)
virtual void SetTimingInfo (const RequestContext::TimingInfo &timing_info)
 Set timing information in the logging implementation.

Protected Member Functions

virtual void SetBlinkInfoImpl (const GoogleString &user_agent)
 Implements setting Blink specific log information; base impl is a no-op.
virtual void SetCacheHtmlLoggingInfoImpl (const GoogleString &user_agent)
 Implements setting Cache Html specific log information.
virtual bool WriteLogImpl ()=0

Detailed Description

This class is a wrapper around a protobuf used to collect logging information. It also provides a simple aggregation mechanism for collecting the ids of applied rewriters.

Care and feeding of log records: (1) All logging must be done through log records. No class should have static members of any logging proto class. Log records can either create the logging protos, or will take ownership of them. (2) All access and manipulation of log data must be guarded by the log record's mutex. Commonly repeated logging operations should be factored into functions in this class (and be so guarded therein). (3) In most cases, log records should be created and owned by request contexts. Subclasses may wrap some other type of protobuf; they must still provide access to a LoggingInfo instance, however.


Constructor & Destructor Documentation

Construct a AbstractLogRecord with a new LoggingInfo proto and caller- supplied mutex. This class takes ownership of the mutex.


Member Function Documentation

void net_instaweb::AbstractLogRecord::AddFoundPropertyToCohortInfo ( int  index,
const GoogleString &  property 
)

Updates the cohort info at the specified index, to include the given property in the last of properties found in the cache.

For compatibility with older logging methods, returns a comma-joined string concatenating the sorted coalesced rewriter ids of APPLIED_OK entries in the rewriter_info array. Each id will appear once in the string if any number of successful rewrites for that id have been logged.

virtual LoggingInfo* net_instaweb::AbstractLogRecord::logging_info ( ) [pure virtual]
Todo:
TODO(gee): Deprecate raw access to proto. Return the LoggingInfo proto wrapped by this class. Calling code must guard any reads and writes to this using mutex().

Implemented in net_instaweb::LogRecord.

void net_instaweb::AbstractLogRecord::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 
)
Todo:
TODO(huibao): Rename LogImageBackgroundRewriteActivity() to make it clear that it will log even when the rewriting finishes in the line-of-request.

Log image rewriting activity, which may not finish when the request processing is done. The outcome is a new log record with request type set to "BACKGROUND_REWRITE".

void net_instaweb::AbstractLogRecord::LogJsDisableFilter ( const char *  id,
bool  has_pagespeed_no_defer 
)
Todo:
TODO(gee): Change the callsites.
void net_instaweb::AbstractLogRecord::LogRewriterApplicationStatus ( const char *  rewriter_id,
RewriterApplication::Status  status 
)

Log the status of a rewriter application on a resource.

Todo:
TODO(gee): I'd really prefer rewriter_id was an enum.
void net_instaweb::AbstractLogRecord::LogRewriterHtmlStatus ( const char *  rewriter_id,
RewriterHtmlApplication::Status  status 
)

Log the HTML level status for a filter. This should be called only once per filter, at the point where it is determined the filter is either active or not.

Return the mutex associated with this instance. Calling code should guard reads and writes of AbstractLogRecords

RewriterInfo* net_instaweb::AbstractLogRecord::NewRewriterInfo ( const char *  rewriter_id)

Create a new rewriter logging submessage for |rewriter_id|, returning a pointer to it for later access. Note that this can return NULL if the size of rewriter_info has grown too large. It is the caller's responsibility to handle this safely.

void net_instaweb::AbstractLogRecord::SetAllowLoggingUrls ( bool  allow_logging_urls)

Sets whether urls should be logged. This could potentially generate a lot of logs data, so this should be switched on only for debugging.

Mutex-guarded log mutation convenience methods. The rule of thumb is that if a single-field update to a logging proto occurs multiple times, it should be factored out into a method on this class.

void net_instaweb::AbstractLogRecord::SetCacheStatusForCohortInfo ( int  index,
bool  found,
int  key_state 
)

Updates the cohort info at the specified index, to indicate whether it was a cache hit.

void net_instaweb::AbstractLogRecord::SetDeviceAndCacheTypeForCohortInfo ( int  index,
int  device_type,
int  cache_type 
)

Updates the cohort info at the specified index with the device and cache type.

void net_instaweb::AbstractLogRecord::SetLogUrlIndices ( bool  log_url_indices)

Sets whether URL indices should be logged for every rewriter application or not.

Sets the maximum number of RewriterInfo submessages that can accumulate in the LoggingInfo proto wrapped by this class.

void net_instaweb::AbstractLogRecord::SetRewriterLoggingStatus ( const char *  rewriter_id,
RewriterApplication::Status  status 
)

Creates a new rewriter logging submessage for |rewriter_id|, and sets status it.

void net_instaweb::AbstractLogRecord::SetRewriterLoggingStatus ( const char *  rewriter_id,
const GoogleString &  url,
RewriterApplication::Status  status 
) [inline]

Creates a new rewriter logging submessage for |rewriter_id|, sets status and the url index.

void net_instaweb::AbstractLogRecord::SetTimeToPcacheEnd ( int64  end_ms) [inline]

Sets the time from the start of the request till the end of the pcache lookup.

Sets the time from the start of the request till the start of the pcache lookup.

Todo:
TODO(gee): Deprecate these methods. Sets the time from the start of the request till it begins getting processed.

Mutex-guarded log-writing operations. Derived classes should override Impl methods. Returns false if the log write attempt failed.

virtual bool net_instaweb::AbstractLogRecord::WriteLogImpl ( ) [protected, pure virtual]

Implements writing a log, base implementation is a no-op. Returns false if writing failed.

Implemented in net_instaweb::CopyOnWriteLogRecord, and net_instaweb::LogRecord.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines