protected function write(array $record)
 {
     $row = new LogTable();
     $row->channel = $record['channel'];
     $row->level = $record['level'];
     $row->message = esc_sql($record['message']);
     $row->context = json_encode($record['context']);
     $row->time = $record['datetime']->format('U');
     $row->save();
 }
Ejemplo n.º 2
0
    public function dashoard_template()
    {
        ?>
		<style type="text/css">
		#podlove-log {
			height: 500px;
			overflow: auto;
			font-family: monospace;
			font-size: 14px;
			line-height: 18px;
			padding: 5px;
		}

		.log-level-200 {  }
		.log-level-400 { color: #95002B; }
		.log-level-550 { background: #95002B; color: #FAD4AF; }
		.log-level-550 a { color: #F4E6AD; }
		</style>

		<script type="text/javascript">
		jQuery(function($) {
			$(document).ready(function() {
				// scroll down
				$("#podlove-log").scrollTop($("#podlove-log")[0].scrollHeight);
			});
		});
		</script>

		<?php 
        if ($timezone = get_option('timezone_string')) {
            date_default_timezone_set($timezone);
        }
        ?>

		<div id="podlove-log">
		<?php 
        foreach (LogTable::find_all_by_where("time > " . strtotime("-1 week")) as $log_entry) {
            ?>
			<div class="log-entry log-level-<?php 
            echo $log_entry->level;
            ?>
">
				<span class="log-date">
					[<?php 
            echo date('Y-m-d H:i:s', $log_entry->time);
            ?>
]
				</span>
				<span class="log-message">
					<?php 
            echo $log_entry->message;
            ?>
				</span>
				<span class="log-extra">
					<?php 
            $data = json_decode($log_entry->context);
            if (isset($data->media_file_id)) {
                if ($media_file = Model\MediaFile::find_by_id($data->media_file_id)) {
                    if ($episode = $media_file->episode()) {
                        if ($asset = $media_file->episode_asset()) {
                            echo sprintf('<a href="%s">%s/%s</a>', get_edit_post_link($episode->post_id), $episode->slug, $asset->title);
                        }
                    }
                }
            }
            if (isset($data->error)) {
                echo sprintf(' "%s"', $data->error);
            }
            if (isset($data->episode_id)) {
                if ($episode = Model\Episode::find_by_id($data->episode_id)) {
                    echo sprintf(' <a href="%s">%s</a>', get_edit_post_link($episode->post_id), get_the_title($episode->post_id));
                }
            }
            if (isset($data->http_code)) {
                echo " HTTP Status: " . $data->http_code;
            }
            if (isset($data->mime_type) && isset($data->expected_mime_type)) {
                echo " Expected: {$data->expected_mime_type}, but found: {$data->mime_type}";
            }
            if (isset($data->type) && $data->type == 'twig') {
                echo sprintf('in template "%s" line %d', $data->template, $data->line);
            }
            ?>
				</span>
			</div>
		<?php 
        }
        ?>
		</div>
		<?php 
    }
 /**
  * Only keep logs for 4 weeks.
  */
 public static function cleanup()
 {
     global $wpdb;
     $wpdb->query('DELETE FROM ' . LogTable::table_name() . ' WHERE time < ' . strtotime("-4 weeks"));
 }