Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F77386
logger.ex
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
1 KB
Subscribers
None
logger.ex
View Options
defmodule
Nola.Plugins.Logger
do
require
Logger
@couch_db
"bot-logs"
def
irc_doc
(),
do
:
nil
def
start_link
()
do
GenServer
.
start_link
(
__MODULE__
,
[],
name
:
__MODULE__
)
end
def
init
([])
do
regopts
=
[
plugin
:
__MODULE__
]
{
:ok
,
_
}
=
Registry
.
register
(
Nola.PubSub
,
"triggers"
,
regopts
)
{
:ok
,
_
}
=
Registry
.
register
(
Nola.PubSub
,
"messages"
,
regopts
)
{
:ok
,
_
}
=
Registry
.
register
(
Nola.PubSub
,
"messages:telegram"
,
regopts
)
{
:ok
,
_
}
=
Registry
.
register
(
Nola.PubSub
,
"irc:outputs"
,
regopts
)
{
:ok
,
_
}
=
Registry
.
register
(
Nola.PubSub
,
"messages:private"
,
regopts
)
{
:ok
,
nil
}
end
def
handle_info
({
:irc
,
:trigger
,
_
,
m
},
state
)
do
{
:noreply
,
log
(
m
,
state
)}
end
def
handle_info
({
:irc
,
:text
,
m
},
state
)
do
{
:noreply
,
log
(
m
,
state
)}
end
def
handle_info
(
info
,
state
)
do
Logger
.
debug
(
"logger_plugin: unhandled info:
#{
info
}
"
)
{
:noreply
,
state
}
end
def
log
(
entry
,
state
)
do
case
Couch
.
post
(
@couch_db
,
format_to_db
(
entry
))
do
{
:ok
,
id
,
_rev
}
->
Logger
.
debug
(
"logger_plugin: saved:
#{
inspect
id
}
"
)
state
error
->
Logger
.
error
(
"logger_plugin: save failed:
#{
inspect
error
}
"
)
end
rescue
e
->
Logger
.
error
(
"logger_plugin: rescued processing for
#{
inspect
entry
}
:
#{
inspect
e
}
"
)
Logger
.
error
(
Exception
.
format
(
:error
,
e
,
__STACKTRACE__
))
state
catch
e
,
b
->
Logger
.
error
(
"logger_plugin: catched processing for
#{
inspect
entry
}
:
#{
inspect
e
}
"
)
Logger
.
error
(
Exception
.
format
(
e
,
b
,
__STACKTRACE__
))
state
end
def
format_to_db
(
msg
=
%
Nola.Message
{
id
:
id
})
do
msg
|>
Poison
.
encode!
()
|>
Map
.
drop
(
"id"
)
%{
"_id"
=>
id
||
FlakeId
.
get
(),
"type"
=>
"irc.message/v1"
,
"object"
=>
msg
}
end
def
format_to_db
(
anything
)
do
%{
"_id"
=>
FlakeId
.
get
(),
"type"
=>
"object"
,
"object"
=>
anything
}
end
end
File Metadata
Details
Attached
Mime Type
text/x-ruby
Expires
Mon, Jul 7, 8:06 AM (1 d, 12 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
49878
Default Alt Text
logger.ex (1 KB)
Attached To
rNOLA Nola
Event Timeline
Log In to Comment