diff --git a/cmd/cgr-rater/cgr-rater.go b/cmd/cgr-rater/cgr-rater.go
index 7a06ccdae..39f1336cc 100644
--- a/cmd/cgr-rater/cgr-rater.go
+++ b/cmd/cgr-rater/cgr-rater.go
@@ -38,7 +38,7 @@ var (
redissrv = flag.String("redissrv", "127.0.0.1:6379", "redis address host:port")
redisdb = flag.Int("redisdb", 10, "redis database number")
listen = flag.String("listen", "127.0.0.1:1234", "listening address host:port")
- standalone = flag.Bool("standalone", false, "start standalone server (no balancer)")
+ standalone = flag.Bool("standalone", false, "start standalone server (no balancer, default false)")
freeswitch = flag.Bool("freeswitch", false, "connect to freeswitch server")
json = flag.Bool("json", false, "use JSON for RPC encoding")
storage Responder
diff --git a/cmd/cgr-rater/registration.go b/cmd/cgr-rater/registration.go
index 998ca49f3..ae374d622 100644
--- a/cmd/cgr-rater/registration.go
+++ b/cmd/cgr-rater/registration.go
@@ -36,7 +36,7 @@ func StopSingnalHandler(server, listen *string, sg timespans.StorageGetter) {
signal.Notify(c, syscall.SIGTERM, syscall.SIGINT, syscall.SIGQUIT)
sig := <-c
- log.Printf("Caught signal %v, unregistering from server\n", sig)
+ log.Printf("Caught signal %v, unregistering from balancer\n", sig)
unregisterFromServer(server, listen)
sg.Close()
os.Exit(1)
@@ -48,14 +48,14 @@ Connects to the inquirer and calls unregister RPC method.
func unregisterFromServer(server, listen *string) {
client, err := rpc.DialHTTP("tcp", *server)
if err != nil {
- log.Print("Cannot contact the server!")
+ log.Print("Cannot contact the balancer!")
os.Exit(1)
}
var reply int
- log.Print("Unregistering from server ", *server)
+ log.Print("Unregistering from balancer ", *server)
client.Call("RaterServer.UnRegisterRater", *listen, &reply)
if err := client.Close(); err != nil {
- log.Print("Could not close server unregistration!")
+ log.Print("Could not close balancer unregistration!")
os.Exit(1)
}
}
@@ -66,14 +66,14 @@ Connects to the inquirer and rehisters the rater to the server.
func RegisterToServer(server, listen *string) {
client, err := rpc.DialHTTP("tcp", *server)
if err != nil {
- log.Print("Cannot contact the server!")
+ log.Print("Cannot contact the balancer!")
os.Exit(1)
}
var reply int
- log.Print("Registering to server ", *server)
+ log.Print("Registering to balancer ", *server)
client.Call("RaterServer.RegisterRater", *listen, &reply)
if err := client.Close(); err != nil {
- log.Print("Could not close server registration!")
+ log.Print("Could not close balancer registration!")
os.Exit(1)
}
log.Print("Registration finished!")
diff --git a/mediator/mediator.go b/mediator/mediator.go
deleted file mode 100644
index 1e206c1eb..000000000
--- a/mediator/mediator.go
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-Rating system designed to be used in VoIP Carriers World
-Copyright (C) 2012 Radu Ioan Fericean
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see
-*/
-
-package mediator
diff --git a/timespans/calldesc.go b/timespans/calldesc.go
index 81077355b..6ebb7c0ec 100644
--- a/timespans/calldesc.go
+++ b/timespans/calldesc.go
@@ -21,18 +21,15 @@ package timespans
import (
"errors"
"fmt"
- "log"
- "log/syslog"
"math"
- "os"
"time"
)
func init() {
var err error
- logger, err = syslog.NewLogger(syslog.LOG_ALERT, log.LstdFlags)
+ logger, err = NewSyslogLogger()
if err != nil {
- logger = log.New(os.Stderr, "", log.LstdFlags)
+ logger = new(StdLogger)
}
}
@@ -45,7 +42,7 @@ const (
var (
storageGetter StorageGetter
- logger *log.Logger
+ logger LoggerInterface
)
/*
@@ -285,7 +282,7 @@ func (cd *CallDescriptor) GetCost() (*CallCost, error) {
Cost: cost,
ConnectFee: connectionFee,
Timespans: timespans}
- logger.Printf("Get Cost: %v => %v", cd, cc)
+ logger.Info(fmt.Sprintf("Get Cost: %v => %v", cd, cc))
return cc, err
}
@@ -340,7 +337,7 @@ func (cd *CallDescriptor) GetMaxSessionTime() (seconds float64, err error) {
func (cd *CallDescriptor) Debit() (cc *CallCost, err error) {
cc, err = cd.GetCost()
if err != nil {
- logger.Printf("error getting cost %v", err)
+ logger.Err(fmt.Sprintf("error getting cost %v", err))
}
if userBalance, err := cd.getUserBalance(); err == nil && userBalance != nil {
defer storageGetter.SetUserBalance(userBalance)
diff --git a/timespans/logger.go b/timespans/logger.go
new file mode 100644
index 000000000..eea92e78b
--- /dev/null
+++ b/timespans/logger.go
@@ -0,0 +1,111 @@
+/*
+Rating system designed to be used in VoIP Carriers World
+Copyright (C) 2012 Radu Ioan Fericean
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see
+*/
+
+package timespans
+
+import (
+ "log"
+ "log/syslog"
+)
+
+type LoggerInterface interface {
+ Alert(m string) error
+ Close() error
+ Crit(m string) error
+ Debug(m string) error
+ Emerg(m string) error
+ Err(m string) error
+ Info(m string) error
+ Notice(m string) error
+ Warning(m string) error
+}
+
+type SyslogLogger struct {
+ *syslog.Writer
+}
+
+func NewSyslogLogger() (*SyslogLogger, error) {
+ logger, err := syslog.New(syslog.LOG_INFO, "CGRateS")
+ return &SyslogLogger{logger}, err
+}
+
+func (sl *SyslogLogger) Alert(m string) (err error) {
+ return sl.Alert(m)
+}
+func (sl *SyslogLogger) Close() error {
+ return sl.Close()
+}
+func (sl *SyslogLogger) Crit(m string) (err error) {
+ return sl.Crit(m)
+}
+func (sl *SyslogLogger) Debug(m string) (err error) {
+ return sl.Debug(m)
+}
+func (sl *SyslogLogger) Emerg(m string) (err error) {
+ return sl.Emerg(m)
+}
+func (sl *SyslogLogger) Err(m string) (err error) {
+ return sl.Err(m)
+}
+func (sl *SyslogLogger) Info(m string) (err error) {
+ return sl.Info(m)
+}
+func (sl *SyslogLogger) Notice(m string) (err error) {
+ return sl.Notice(m)
+}
+func (sl *SyslogLogger) Warning(m string) (err error) {
+ return sl.Warning(m)
+}
+
+type StdLogger struct{}
+
+func (sl *StdLogger) Alert(m string) (err error) {
+ log.Print("[ALERT]" + m)
+ return
+}
+func (sl *StdLogger) Close() (err error) {
+ return
+}
+func (sl *StdLogger) Crit(m string) (err error) {
+ log.Print("[CRITICAL]" + m)
+ return
+}
+func (sl *StdLogger) Debug(m string) (err error) {
+ log.Print("[DEBUG]" + m)
+ return
+}
+func (sl *StdLogger) Emerg(m string) (err error) {
+ log.Print("[EMERGENCY]" + m)
+ return
+}
+func (sl *StdLogger) Err(m string) (err error) {
+ log.Print("[ERROR]" + m)
+ return
+}
+func (sl *StdLogger) Info(m string) (err error) {
+ log.Print("[INFO]" + m)
+ return
+}
+func (sl *StdLogger) Notice(m string) (err error) {
+ log.Print("[NOTICE]" + m)
+ return
+}
+func (sl *StdLogger) Warning(m string) (err error) {
+ log.Print("[WARNING]" + m)
+ return
+}