@@ -11,6 +11,8 @@ class AgentLog < ActiveRecord::Base |
||
11 | 11 |
validates_presence_of :agent, :message |
12 | 12 |
validates_numericality_of :level, :only_integer => true, :greater_than_or_equal_to => 0, :less_than => 5 |
13 | 13 |
|
14 |
+ before_save :truncate_message |
|
15 |
+ |
|
14 | 16 |
def self.log_for_agent(agent, message, options = {}) |
15 | 17 |
log = agent.logs.create! options.merge(:message => message) |
16 | 18 |
if agent.logs.count > log_length |
@@ -26,4 +28,10 @@ class AgentLog < ActiveRecord::Base |
||
26 | 28 |
def self.log_length |
27 | 29 |
ENV['AGENT_LOG_LENGTH'].present? ? ENV['AGENT_LOG_LENGTH'].to_i : 200 |
28 | 30 |
end |
31 |
+ |
|
32 |
+ protected |
|
33 |
+ |
|
34 |
+ def truncate_message |
|
35 |
+ self.message = message[0...2048] if message.present? |
|
36 |
+ end |
|
29 | 37 |
end |
@@ -42,6 +42,13 @@ describe AgentLog do |
||
42 | 42 |
end |
43 | 43 |
end |
44 | 44 |
|
45 |
+ it "truncates message to a reasonable length" do |
|
46 |
+ log = AgentLog.new(:agent => agents(:jane_website_agent), :level => 3) |
|
47 |
+ log.message = "a" * 3000 |
|
48 |
+ log.save! |
|
49 |
+ log.message.length.should == 2048 |
|
50 |
+ end |
|
51 |
+ |
|
45 | 52 |
describe "#log_for_agent" do |
46 | 53 |
it "creates AgentLogs" do |
47 | 54 |
log = AgentLog.log_for_agent(agents(:jane_website_agent), "some message", :level => 4, :outbound_event => events(:jane_website_agent_event)) |