commit
ce526fde77
Binary file not shown.
@ -0,0 +1,3 @@
|
||||
#safe table
|
||||
#Mon Jan 05 10:27:54 CST 2015
|
||||
connections=connections.15
|
@ -0,0 +1,4 @@
|
||||
#safe table
|
||||
#Mon Jan 05 10:27:54 CST 2015
|
||||
defaultConnection=defaultConnection.15
|
||||
sites=sites.15
|
@ -0,0 +1,3 @@
|
||||
#safe table
|
||||
#Mon Jan 05 10:27:28 CST 2015
|
||||
webservers=webservers.12
|
@ -0,0 +1,3 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<session version="1.0">
<refactoring comment="Delete resource 'trustie2'" deleteContents="false" description="Delete resource 'trustie2'" element1="/trustie2" flags="7" id="org.eclipse.ltk.core.refactoring.delete.resources" resources="1" stamp="1420424676858"/>
<refactoring comment="Delete resource 'trustie2'" deleteContents="false" description="Delete resource 'trustie2'" element1="/trustie2" flags="7" id="org.eclipse.ltk.core.refactoring.delete.resources" resources="1" stamp="1420424775104"/>
|
||||
</session>
|
@ -0,0 +1,2 @@
|
||||
1420424676858 Delete resource 'trustie2'
|
||||
1420424775104 Delete resource 'trustie2'
|
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<section name="Workbench">
|
||||
<section name="RefactoringWizard.preview">
|
||||
<item value="400" key="height"/>
|
||||
<item value="600" key="width"/>
|
||||
</section>
|
||||
</section>
|
@ -0,0 +1,3 @@
|
||||
# Place all the behaviors and hooks related to the matching controller here.
|
||||
# All this logic will automatically be available in application.js.
|
||||
# You can use CoffeeScript in this file: http://jashkenas.github.com/coffee-script/
|
@ -0,0 +1,3 @@
|
||||
// Place all the styles related to the system_log controller here.
|
||||
// They will automatically be included in application.css.
|
||||
// You can use Sass (SCSS) here: http://sass-lang.com/
|
@ -0,0 +1,59 @@
|
||||
# Time 2015-01-26 17:12:23
|
||||
# Author lizanle
|
||||
# Description 显示和清理系统日志
|
||||
class SystemLogController < ApplicationController
|
||||
|
||||
before_filter :require_admin
|
||||
# 默认每页显示20条记录
|
||||
PER_PAGE = 20
|
||||
layout "base"
|
||||
include SystemLogHelper
|
||||
|
||||
# Time 2015-01-26 17:12:46
|
||||
# Author lizanle
|
||||
# Description 查看所有日志
|
||||
def index
|
||||
@logs = SystemLog.logo_data(params[:page]||1, params[:per]||PER_PAGE, params[:search], params[:day])
|
||||
end
|
||||
|
||||
# Time 2015-01-26 14:42:38
|
||||
# Author lizanle
|
||||
# Description 清除日志
|
||||
def clear
|
||||
SystemLog.clear params[:day]
|
||||
redirect_to :action => :index
|
||||
end
|
||||
|
||||
# Time 2015-01-26 17:24:25
|
||||
# Author lizanle
|
||||
# Description 访问分析
|
||||
def access_analysis
|
||||
#解析日志,然后逆序
|
||||
@log_result = SystemLog.analysis(params[:day]).reverse[1...-1]
|
||||
@access_module = Hash.new
|
||||
#日誌可能為空
|
||||
if @log_result && !@log_result.empty?
|
||||
#将数组中的模块访问统计出来放到hash中 每条记录的第四个值是Controller#action的形式
|
||||
@log_result.collect! { |r| @access_module[r[3]].nil? ?
|
||||
@access_module[r[3]] = 1 : @access_module[r[3]] +=1 }
|
||||
# 去掉key可能为空记录 排序,然后取逆序
|
||||
@access_module = @access_module.delete_if { |k, v| k.nil? }.sort_by { |key, val| val }.reverse
|
||||
else
|
||||
@access_module
|
||||
end
|
||||
end
|
||||
|
||||
# Time 2015-01-26 17:24:36
|
||||
# Author lizanle
|
||||
# Description 耗时分析
|
||||
def time_analysis
|
||||
#解析日志
|
||||
@log_result = SystemLog.analysis(params[:day]).reverse[1...-1]
|
||||
if @log_result && !@log_result.empty?
|
||||
#分页
|
||||
@log_result = Kaminari.paginate_array(@log_result).page(params[:page]||1).per(params[:per]||PER_PAGE)
|
||||
else
|
||||
@log_result = []
|
||||
end
|
||||
end
|
||||
end
|
@ -0,0 +1,16 @@
|
||||
module ExpireHelper
|
||||
#index.html 中 “projects”塊 緩存過期
|
||||
def expire_project_cache
|
||||
ActionController::Base.new.expire_fragment('projects')
|
||||
end
|
||||
|
||||
#index.html 中 “activities”塊 緩存過期
|
||||
def expire_activitie_cache
|
||||
ActionController::Base.new.expire_fragment('activities')
|
||||
end
|
||||
|
||||
#welcome/index.html 中 “forums”塊 緩存過期
|
||||
def expire_forum_cache
|
||||
ActionController::Base.new.expire_fragment('forums')
|
||||
end
|
||||
end
|
@ -1,4 +1,10 @@
|
||||
class ContestNotification < ActiveRecord::Base
|
||||
include ExpireHelper
|
||||
attr_accessible :content, :title
|
||||
validates :title, length: {maximum: 30}
|
||||
after_create :expire_forum_cache
|
||||
after_update :expire_forum_cache
|
||||
before_destroy :expire_forum_cache
|
||||
|
||||
|
||||
end
|
||||
|
@ -0,0 +1,54 @@
|
||||
<%#
|
||||
# To change this template, choose Tools | Templates
|
||||
# and open the template in the editor.
|
||||
%>
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<title>System Log</title>
|
||||
<style type="text/css">
|
||||
/*body {*/
|
||||
/*font-size:90%;*/
|
||||
/*}*/
|
||||
body {
|
||||
color: #333333;
|
||||
font-family: lucida grande, Lucida Sans Unicode, Arial, Helvetica, sans-serif;
|
||||
font-size: 12px;
|
||||
line-height: 20px;
|
||||
}
|
||||
|
||||
.search_results {
|
||||
color: red;
|
||||
}
|
||||
/*=======分页样式========*/
|
||||
.pagination ul li a, .pagination ul li span{
|
||||
background-color: #FFFFFF;
|
||||
border-color: #DDDDDD;
|
||||
border-image: none;
|
||||
border-style: solid;
|
||||
border-width: 1px 1px 1px 1px;
|
||||
float: left;
|
||||
line-height: 20px;
|
||||
padding: 4px 12px;
|
||||
text-decoration: none;
|
||||
}
|
||||
.pagination ul a {
|
||||
color: #9B9B9B;
|
||||
}
|
||||
.pagination ul li a:hover, .pagination ul li a:focus, .pagination ul .active a, .pagination ul .active span{
|
||||
background-color: #ffc02f;
|
||||
border: 1px solid #ffc02f;
|
||||
}
|
||||
.pagination ul li{
|
||||
float: left;
|
||||
margin-right: 3px;
|
||||
list-style: none outside none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body onload="document.getElementById('search').focus();">
|
||||
<%= yield %>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,36 @@
|
||||
<% @nav_dispaly_home_path_label = 1
|
||||
@nav_dispaly_main_course_label = 1
|
||||
@nav_dispaly_main_project_label = 1
|
||||
@nav_dispaly_main_contest_label = 1 %>
|
||||
<% @nav_dispaly_forum_label = 1%>
|
||||
|
||||
|
||||
<div id='tool'>
|
||||
<p>
|
||||
<form action="/system_log/access_analysis" style="float:right" >
|
||||
<input name="day" type="text" size="36" value="<%= params[:day].nil? ? Time.now.strftime("%Y-%m-%d") : params[:day] %>" maxlength="100" readonly="true" onclick="HS_setDate(this)"/>
|
||||
<input type="submit" value="<%=l(:label_search_member)%>" size="30" id="search"/>
|
||||
</form>
|
||||
</p>
|
||||
<div id='tool-bar'>
|
||||
<%=link_to l(:label_log_detail), system_log_path %> |
|
||||
<%=link_to l(:label_log_delete_log), system_log_clear_path, {:confirm => l(:label_log_delete_confirm),:day=>params[:day].nil? ? Time.now.strftime("%Y-%m-%d") : params[:day]}%> |
|
||||
<%=link_to l(:label_log_access_analysis), system_log_access_analysis_path %> |
|
||||
<%=link_to l(:label_log_time_analysis), system_log_time_analysis_path %> |
|
||||
<%=link_to_function l(:label_log_refresh), 'redo()' %>
|
||||
</div>
|
||||
</div>
|
||||
<div> </div>
|
||||
<table border="2" width="100%">
|
||||
<caption font-size="30px"><%= l(:label_log_access_analysis)%></caption>
|
||||
<tr><td><%= l(:label_log_access_controller_action)%></td>
|
||||
<td><%= l(:label_log_access_count)%></td></tr>
|
||||
<% unless @access_module.nil? %>
|
||||
<% @access_module.each do |k, v| %>
|
||||
<% unless k.blank? %>
|
||||
<tr><td><%= raw k %></td>
|
||||
<td><%= raw v %></td></tr>
|
||||
<% end %>
|
||||
<%end %>
|
||||
<%end %>
|
||||
</table>
|
@ -0,0 +1,45 @@
|
||||
<% @nav_dispaly_home_path_label = 1
|
||||
@nav_dispaly_main_course_label = 1
|
||||
@nav_dispaly_main_project_label = 1
|
||||
@nav_dispaly_main_contest_label = 1 %>
|
||||
<% @nav_dispaly_forum_label = 1%>
|
||||
|
||||
<div id='tool'>
|
||||
|
||||
<div id='tool-bar' style="float: left">
|
||||
<%=link_to l(:label_log_detail), system_log_path %> |
|
||||
<%=link_to l(:label_log_delete_log), system_log_clear_path, {:confirm => l(:label_log_delete_confirm),:day=>params[:day].nil? ? Time.now.strftime("%Y-%m-%d") : params[:day]}%> |
|
||||
<%=link_to l(:label_log_access_analysis), system_log_access_analysis_path %> |
|
||||
<%=link_to l(:label_log_time_analysis), system_log_time_analysis_path %> |
|
||||
<%=link_to_function l(:label_log_refresh), 'redo()' %>
|
||||
</div>
|
||||
<div id="search-bar" style="float: right">
|
||||
|
||||
<form action="/system_log" style="float:right" >
|
||||
<p>
|
||||
<%= l(:label_log_key) %><input type="text" name="search" size="36" value="<%= params[:search] %>" maxlength="100" style="margin-right: 12px" />
|
||||
</p>
|
||||
<p>
|
||||
<%=l(:label_log_time)%><input name="day" type="text" id="day" size="36" value="<%= params[:day].nil? ? Time.now.strftime("%Y-%m-%d") : params[:day] %>" maxlength="100" readonly="true" onclick="HS_setDate(this)"/>
|
||||
<input type="submit" value="<%=l(:label_search_member)%>" size="30" id="search"/>
|
||||
</p>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<div style="clear: both"> </div>
|
||||
<div>
|
||||
<%= paginate @logs unless @logs.empty? %><br/>
|
||||
|
||||
<% unless @logs.empty? %>
|
||||
<table border="2" >
|
||||
<caption font-size="30px"><%=l(:label_log_detail)%></caption>
|
||||
<% @logs.each do |log| %>
|
||||
<% unless log.blank? %>
|
||||
<tr><td><%= raw log %></td></tr>
|
||||
<% end %>
|
||||
<%end %>
|
||||
</table>
|
||||
<%end %>
|
||||
<%= paginate @logs unless @logs.empty? %>
|
||||
</div>
|
@ -0,0 +1,224 @@
|
||||
#
|
||||
# This file configures the New Relic Agent. New Relic monitors Ruby, Java,
|
||||
# .NET, PHP, Python and Node applications with deep visibility and low
|
||||
# overhead. For more information, visit www.newrelic.com.
|
||||
#
|
||||
# Generated January 23, 2015
|
||||
#
|
||||
# This configuration file is custom generated for Trustie
|
||||
|
||||
|
||||
# Here are the settings that are common to all environments
|
||||
common: &default_settings
|
||||
# ============================== LICENSE KEY ===============================
|
||||
|
||||
# You must specify the license key associated with your New Relic
|
||||
# account. This key binds your Agent's data to your account in the
|
||||
# New Relic service.
|
||||
license_key: '9b481f5c9ec07de722dcaaa17b38d0d1efff32c0'
|
||||
|
||||
# Agent Enabled (Ruby/Rails Only)
|
||||
# Use this setting to force the agent to run or not run.
|
||||
# Default is 'auto' which means the agent will install and run only
|
||||
# if a valid dispatcher such as Mongrel is running. This prevents
|
||||
# it from running with Rake or the console. Set to false to
|
||||
# completely turn the agent off regardless of the other settings.
|
||||
# Valid values are true, false and auto.
|
||||
#
|
||||
# agent_enabled: auto
|
||||
|
||||
# Application Name Set this to be the name of your application as
|
||||
# you'd like it show up in New Relic. The service will then auto-map
|
||||
# instances of your application into an "application" on your
|
||||
# dashboard page. If you want to map this instance into multiple
|
||||
# apps, like "AJAX Requests" and "All UI" then specify a semicolon
|
||||
# separated list of up to three distinct names, or a yaml list.
|
||||
# Defaults to the capitalized RAILS_ENV or RACK_ENV (i.e.,
|
||||
# Production, Staging, etc)
|
||||
#
|
||||
# Example:
|
||||
#
|
||||
# app_name:
|
||||
# - Ajax Service
|
||||
# - All Services
|
||||
#
|
||||
# Caution: If you change this name, a new application will appear in the New
|
||||
# Relic user interface with the new name, and data will stop reporting to the
|
||||
# app with the old name.
|
||||
#
|
||||
# See https://newrelic.com/docs/site/renaming-applications for more details
|
||||
# on renaming your New Relic applications.
|
||||
#
|
||||
app_name: My Application
|
||||
|
||||
# When "true", the agent collects performance data about your
|
||||
# application and reports this data to the New Relic service at
|
||||
# newrelic.com. This global switch is normally overridden for each
|
||||
# environment below. (formerly called 'enabled')
|
||||
monitor_mode: true
|
||||
|
||||
# Developer mode should be off in every environment but
|
||||
# development as it has very high overhead in memory.
|
||||
developer_mode: false
|
||||
|
||||
# The newrelic agent generates its own log file to keep its logging
|
||||
# information separate from that of your application. Specify its
|
||||
# log level here.
|
||||
log_level: info
|
||||
|
||||
# Optionally set the path to the log file This is expanded from the
|
||||
# root directory (may be relative or absolute, e.g. 'log/' or
|
||||
# '/var/log/') The agent will attempt to create this directory if it
|
||||
# does not exist.
|
||||
# log_file_path: 'log'
|
||||
|
||||
# Optionally set the name of the log file, defaults to 'newrelic_agent.log'
|
||||
# log_file_name: 'newrelic_agent.log'
|
||||
|
||||
# The newrelic agent communicates with the service via https by default. This
|
||||
# prevents eavesdropping on the performance metrics transmitted by the agent.
|
||||
# The encryption required by SSL introduces a nominal amount of CPU overhead,
|
||||
# which is performed asynchronously in a background thread. If you'd prefer
|
||||
# to send your metrics over http uncomment the following line.
|
||||
# ssl: false
|
||||
|
||||
#============================== Browser Monitoring ===============================
|
||||
# New Relic Real User Monitoring gives you insight into the performance real users are
|
||||
# experiencing with your website. This is accomplished by measuring the time it takes for
|
||||
# your users' browsers to download and render your web pages by injecting a small amount
|
||||
# of JavaScript code into the header and footer of each page.
|
||||
browser_monitoring:
|
||||
# By default the agent automatically injects the monitoring JavaScript
|
||||
# into web pages. Set this attribute to false to turn off this behavior.
|
||||
auto_instrument: true
|
||||
|
||||
# Proxy settings for connecting to the New Relic server.
|
||||
#
|
||||
# If a proxy is used, the host setting is required. Other settings
|
||||
# are optional. Default port is 8080.
|
||||
#
|
||||
# proxy_host: hostname
|
||||
# proxy_port: 8080
|
||||
# proxy_user:
|
||||
# proxy_pass:
|
||||
|
||||
# The agent can optionally log all data it sends to New Relic servers to a
|
||||
# separate log file for human inspection and auditing purposes. To enable this
|
||||
# feature, change 'enabled' below to true.
|
||||
# See: https://newrelic.com/docs/ruby/audit-log
|
||||
audit_log:
|
||||
enabled: false
|
||||
|
||||
# Tells transaction tracer and error collector (when enabled)
|
||||
# whether or not to capture HTTP params. When true, frameworks can
|
||||
# exclude HTTP parameters from being captured.
|
||||
# Rails: the RoR filter_parameter_logging excludes parameters
|
||||
# Java: create a config setting called "ignored_params" and set it to
|
||||
# a comma separated list of HTTP parameter names.
|
||||
# ex: ignored_params: credit_card, ssn, password
|
||||
capture_params: false
|
||||
|
||||
# Transaction tracer captures deep information about slow
|
||||
# transactions and sends this to the New Relic service once a
|
||||
# minute. Included in the transaction is the exact call sequence of
|
||||
# the transactions including any SQL statements issued.
|
||||
transaction_tracer:
|
||||
|
||||
# Transaction tracer is enabled by default. Set this to false to
|
||||
# turn it off. This feature is only available at the Professional
|
||||
# and above product levels.
|
||||
enabled: true
|
||||
|
||||
# Threshold in seconds for when to collect a transaction
|
||||
# trace. When the response time of a controller action exceeds
|
||||
# this threshold, a transaction trace will be recorded and sent to
|
||||
# New Relic. Valid values are any float value, or (default) "apdex_f",
|
||||
# which will use the threshold for an dissatisfying Apdex
|
||||
# controller action - four times the Apdex T value.
|
||||
transaction_threshold: apdex_f
|
||||
|
||||
# When transaction tracer is on, SQL statements can optionally be
|
||||
# recorded. The recorder has three modes, "off" which sends no
|
||||
# SQL, "raw" which sends the SQL statement in its original form,
|
||||
# and "obfuscated", which strips out numeric and string literals.
|
||||
record_sql: obfuscated
|
||||
|
||||
# Threshold in seconds for when to collect stack trace for a SQL
|
||||
# call. In other words, when SQL statements exceed this threshold,
|
||||
# then capture and send to New Relic the current stack trace. This is
|
||||
# helpful for pinpointing where long SQL calls originate from.
|
||||
stack_trace_threshold: 0.500
|
||||
|
||||
# Determines whether the agent will capture query plans for slow
|
||||
# SQL queries. Only supported in mysql and postgres. Should be
|
||||
# set to false when using other adapters.
|
||||
# explain_enabled: true
|
||||
|
||||
# Threshold for query execution time below which query plans will
|
||||
# not be captured. Relevant only when `explain_enabled` is true.
|
||||
# explain_threshold: 0.5
|
||||
|
||||
# Error collector captures information about uncaught exceptions and
|
||||
# sends them to New Relic for viewing
|
||||
error_collector:
|
||||
|
||||
# Error collector is enabled by default. Set this to false to turn
|
||||
# it off. This feature is only available at the Professional and above
|
||||
# product levels.
|
||||
enabled: true
|
||||
|
||||
# To stop specific errors from reporting to New Relic, set this property
|
||||
# to comma-separated values. Default is to ignore routing errors,
|
||||
# which are how 404's get triggered.
|
||||
ignore_errors: "ActionController::RoutingError,Sinatra::NotFound"
|
||||
|
||||
# If you're interested in capturing memcache keys as though they
|
||||
# were SQL uncomment this flag. Note that this does increase
|
||||
# overhead slightly on every memcached call, and can have security
|
||||
# implications if your memcached keys are sensitive
|
||||
# capture_memcache_keys: true
|
||||
|
||||
# Application Environments
|
||||
# ------------------------------------------
|
||||
# Environment-specific settings are in this section.
|
||||
# For Rails applications, RAILS_ENV is used to determine the environment.
|
||||
# For Java applications, pass -Dnewrelic.environment <environment> to set
|
||||
# the environment.
|
||||
|
||||
# NOTE if your application has other named environments, you should
|
||||
# provide newrelic configuration settings for these environments here.
|
||||
|
||||
development:
|
||||
<<: *default_settings
|
||||
# Turn on communication to New Relic service in development mode
|
||||
monitor_mode: true
|
||||
app_name: My Application (Development)
|
||||
|
||||
# Rails Only - when running in Developer Mode, the New Relic Agent will
|
||||
# present performance information on the last 100 transactions you have
|
||||
# executed since starting the mongrel.
|
||||
# NOTE: There is substantial overhead when running in developer mode.
|
||||
# Do not use for production or load testing.
|
||||
developer_mode: true
|
||||
|
||||
test:
|
||||
<<: *default_settings
|
||||
# It almost never makes sense to turn on the agent when running
|
||||
# unit, functional or integration tests or the like.
|
||||
monitor_mode: false
|
||||
|
||||
# Turn on the agent in production for 24x7 monitoring. NewRelic
|
||||
# testing shows an average performance impact of < 5 ms per
|
||||
# transaction, you can leave this on all the time without
|
||||
# incurring any user-visible performance degradation.
|
||||
production:
|
||||
<<: *default_settings
|
||||
monitor_mode: true
|
||||
|
||||
# Many applications have a staging environment which behaves
|
||||
# identically to production. Support for that environment is provided
|
||||
# here. By default, the staging environment has the agent turned on.
|
||||
staging:
|
||||
<<: *default_settings
|
||||
monitor_mode: true
|
||||
app_name: My Application (Staging)
|
@ -0,0 +1,7 @@
|
||||
require 'test_helper'
|
||||
|
||||
class SystemLogControllerTest < ActionController::TestCase
|
||||
# test "the truth" do
|
||||
# assert true
|
||||
# end
|
||||
end
|
@ -0,0 +1,4 @@
|
||||
require 'test_helper'
|
||||
|
||||
class ExpireHelperTest < ActionView::TestCase
|
||||
end
|
@ -0,0 +1,4 @@
|
||||
require 'test_helper'
|
||||
|
||||
class SystemLogHelperTest < ActionView::TestCase
|
||||
end
|
@ -1 +0,0 @@
|
||||
Put your Redmine plugins here.
|
Loading…
Reference in new issue