Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
U
uniset2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
1
Issues
1
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
UniSet project repositories
uniset2
Commits
3b4b4066
Commit
3b4b4066
authored
Sep 22, 2017
by
Pavel Vainerman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
(LogDB): добавил отключение записи в БД, чтобы можно было запускать
на работу в режиме "микросервиса", только просмотр логов в реальном времени.
parent
842621e5
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
48 additions
and
24 deletions
+48
-24
LogDB.cc
extensions/LogDB/LogDB.cc
+47
-22
LogDB.h
extensions/LogDB/LogDB.h
+0
-1
start_fg_single.sh
extensions/LogDB/start_fg_single.sh
+1
-1
No files found.
extensions/LogDB/LogDB.cc
View file @
3b4b4066
...
@@ -100,6 +100,11 @@ LogDB::LogDB( const string& name, int argc, const char* const* argv, const strin
...
@@ -100,6 +100,11 @@ LogDB::LogDB( const string& name, int argc, const char* const* argv, const strin
flushBufferTimer
.
set
<
LogDB
,
&
LogDB
::
onCheckBuffer
>
(
this
);
flushBufferTimer
.
set
<
LogDB
,
&
LogDB
::
onCheckBuffer
>
(
this
);
wsactivate
.
set
<
LogDB
,
&
LogDB
::
onActivate
>
(
this
);
wsactivate
.
set
<
LogDB
,
&
LogDB
::
onActivate
>
(
this
);
bool
dbDisabled
=
(
uniset
::
findArgParam
(
"--"
+
prefix
+
"db-disable"
,
argc
,
argv
)
!=
-
1
);
if
(
dbDisabled
)
dbinfo
<<
myname
<<
"(init): save to database DISABLED.."
<<
endl
;
UniXML
::
iterator
sit
(
cnode
);
UniXML
::
iterator
sit
(
cnode
);
if
(
!
sit
.
goChildren
()
)
if
(
!
sit
.
goChildren
()
)
...
@@ -146,7 +151,8 @@ LogDB::LogDB( const string& name, int argc, const char* const* argv, const strin
...
@@ -146,7 +151,8 @@ LogDB::LogDB( const string& name, int argc, const char* const* argv, const strin
// l->tcp = make_shared<UTCPStream>();
// l->tcp = make_shared<UTCPStream>();
l
->
dblog
=
dblog
;
l
->
dblog
=
dblog
;
l
->
signal_on_read
().
connect
(
sigc
::
mem_fun
(
this
,
&
LogDB
::
addLog
));
if
(
!
dbDisabled
)
l
->
signal_on_read
().
connect
(
sigc
::
mem_fun
(
this
,
&
LogDB
::
addLog
));
// l->set(loop);
// l->set(loop);
logservers
.
push_back
(
l
);
logservers
.
push_back
(
l
);
...
@@ -161,28 +167,30 @@ LogDB::LogDB( const string& name, int argc, const char* const* argv, const strin
...
@@ -161,28 +167,30 @@ LogDB::LogDB( const string& name, int argc, const char* const* argv, const strin
}
}
const
std
::
string
dbfile
=
uniset
::
getArgParam
(
"--"
+
prefix
+
"dbfile"
,
argc
,
argv
,
it
.
getProp
(
"dbfile"
));
if
(
!
dbDisabled
)
if
(
dbfile
.
empty
()
)
{
{
ostringstream
err
;
const
std
::
string
dbfile
=
uniset
::
getArgParam
(
"--"
+
prefix
+
"dbfile"
,
argc
,
argv
,
it
.
getProp
(
"dbfile"
));
err
<<
name
<<
"(init): dbfile (sqlite) not defined. Use: <LogDB name='"
<<
name
<<
"' dbfile='..' ...>"
;
dbcrit
<<
err
.
str
()
<<
endl
;
throw
uniset
::
SystemError
(
err
.
str
());
}
db
=
unisetstd
::
make_unique
<
SQLiteInterface
>
();
if
(
dbfile
.
empty
()
)
{
ostringstream
err
;
err
<<
name
<<
"(init): dbfile (sqlite) not defined. Use: <LogDB name='"
<<
name
<<
"' dbfile='..' ...>"
;
dbcrit
<<
err
.
str
()
<<
endl
;
throw
uniset
::
SystemError
(
err
.
str
());
}
if
(
!
db
->
connect
(
dbfile
,
false
,
SQLITE_OPEN_FULLMUTEX
)
)
db
=
unisetstd
::
make_unique
<
SQLiteInterface
>
();
{
ostringstream
err
;
err
<<
myname
<<
"(init): DB connection error: "
<<
db
->
error
();
dbcrit
<<
err
.
str
()
<<
endl
;
throw
uniset
::
SystemError
(
err
.
str
());
}
if
(
!
db
->
connect
(
dbfile
,
false
,
SQLITE_OPEN_FULLMUTEX
)
)
{
ostringstream
err
;
err
<<
myname
<<
"(init): DB connection error: "
<<
db
->
error
();
dbcrit
<<
err
.
str
()
<<
endl
;
throw
uniset
::
SystemError
(
err
.
str
());
}
}
#ifndef DISABLE_REST_API
#ifndef DISABLE_REST_API
httpHost
=
uniset
::
getArgParam
(
"--"
+
prefix
+
"httpserver-host"
,
argc
,
argv
,
"localhost"
);
httpHost
=
uniset
::
getArgParam
(
"--"
+
prefix
+
"httpserver-host"
,
argc
,
argv
,
"localhost"
);
...
@@ -222,7 +230,7 @@ LogDB::~LogDB()
...
@@ -222,7 +230,7 @@ LogDB::~LogDB()
//--------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------
void
LogDB
::
flushBuffer
()
void
LogDB
::
flushBuffer
()
{
{
if
(
qbuf
.
empty
()
||
!
db
->
isConnection
()
)
if
(
!
db
||
qbuf
.
empty
()
||
!
db
->
isConnection
()
)
return
;
return
;
// без BEGIN и COMMIT вставка большого количества данных будет тормозить!
// без BEGIN и COMMIT вставка большого количества данных будет тормозить!
...
@@ -252,6 +260,9 @@ void LogDB::flushBuffer()
...
@@ -252,6 +260,9 @@ void LogDB::flushBuffer()
//--------------------------------------------------------------------------------------------
//--------------------------------------------------------------------------------------------
void
LogDB
::
rotateDB
()
void
LogDB
::
rotateDB
()
{
{
if
(
!
db
)
return
;
// ротация отключена
// ротация отключена
if
(
maxdbRecords
==
0
)
if
(
maxdbRecords
==
0
)
return
;
return
;
...
@@ -349,6 +360,7 @@ void LogDB::help_print()
...
@@ -349,6 +360,7 @@ void LogDB::help_print()
cout
<<
"--prefix-max-records sz - Максимальное количество записей в БД. При превышении, старые удаляются. 0 - не удалять"
<<
endl
;
cout
<<
"--prefix-max-records sz - Максимальное количество записей в БД. При превышении, старые удаляются. 0 - не удалять"
<<
endl
;
cout
<<
"--prefix-overflow-factor float - Коэффициент переполнения, после которого запускается удаление старых записей. По умолчанию: 1.3"
<<
endl
;
cout
<<
"--prefix-overflow-factor float - Коэффициент переполнения, после которого запускается удаление старых записей. По умолчанию: 1.3"
<<
endl
;
cout
<<
"--prefix-max-websockets num - Максимальное количество websocket-ов"
<<
endl
;
cout
<<
"--prefix-max-websockets num - Максимальное количество websocket-ов"
<<
endl
;
cout
<<
"--prefix-db-disable - Отключить запись в БД"
<<
endl
;
}
}
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
LogDB
::
run
(
bool
async
)
void
LogDB
::
run
(
bool
async
)
...
@@ -370,8 +382,11 @@ void LogDB::evfinish()
...
@@ -370,8 +382,11 @@ void LogDB::evfinish()
// -----------------------------------------------------------------------------
// -----------------------------------------------------------------------------
void
LogDB
::
evprepare
()
void
LogDB
::
evprepare
()
{
{
flushBufferTimer
.
set
(
loop
);
if
(
db
)
flushBufferTimer
.
start
(
0
,
tmFlushBuffer_sec
);
{
flushBufferTimer
.
set
(
loop
);
flushBufferTimer
.
start
(
0
,
tmFlushBuffer_sec
);
}
wsactivate
.
set
(
loop
);
wsactivate
.
set
(
loop
);
wsactivate
.
start
();
wsactivate
.
start
();
...
@@ -721,6 +736,16 @@ void LogDB::handleRequest( Poco::Net::HTTPServerRequest& req, Poco::Net::HTTPSer
...
@@ -721,6 +736,16 @@ void LogDB::handleRequest( Poco::Net::HTTPServerRequest& req, Poco::Net::HTTPSer
return
;
return
;
}
}
if
(
!
db
)
{
ostringstream
err
;
err
<<
"Working with the database is disabled"
;
auto
jdata
=
respError
(
resp
,
HTTPResponse
::
HTTP_SERVICE_UNAVAILABLE
,
err
.
str
());
jdata
->
stringify
(
out
);
out
.
flush
();
return
;
}
auto
qp
=
uri
.
getQueryParameters
();
auto
qp
=
uri
.
getQueryParameters
();
resp
.
setStatus
(
HTTPResponse
::
HTTP_OK
);
resp
.
setStatus
(
HTTPResponse
::
HTTP_OK
);
...
...
extensions/LogDB/LogDB.h
View file @
3b4b4066
...
@@ -134,7 +134,6 @@ namespace uniset
...
@@ -134,7 +134,6 @@ namespace uniset
\todo WebSocket: доделать настройку всевозможных timeout-ов
\todo WebSocket: доделать настройку всевозможных timeout-ов
\todo db: возможно всё-таки стоит парсить логи на предмет loglevel, и тогда уж и дату с временем вынимать
\todo db: возможно всё-таки стоит парсить логи на предмет loglevel, и тогда уж и дату с временем вынимать
\todo web: генерировать html-страничку со списком подключения к логам с использованием готового шаблона
\todo web: генерировать html-страничку со списком подключения к логам с использованием готового шаблона
\todo db: ведение БД сделать отключаемым в настройках (чтобы можно было запускать только как сервис наблюдения за логами в реальном времени)
\todo db: сделать в RESET API команду включения или отключения запись логов в БД, для управления "на ходу"
\todo db: сделать в RESET API команду включения или отключения запись логов в БД, для управления "на ходу"
*/
*/
class
LogDB
:
class
LogDB
:
...
...
extensions/LogDB/start_fg_single.sh
View file @
3b4b4066
...
@@ -3,7 +3,7 @@
...
@@ -3,7 +3,7 @@
ulimit
-Sc
1000000
ulimit
-Sc
1000000
#uniset2-start.sh -g \
#uniset2-start.sh -g \
./uniset2-logdb
--logdb-single-confile
logdb-conf.xml
--logdb-name
LogDB
\
./uniset2-logdb
--logdb-single-confile
logdb-conf.xml
--logdb-name
LogDB
--logdb-db-disable
\
--logdb-log-add-levels
any
\
--logdb-log-add-levels
any
\
--logdb-dbfile
./test.db
\
--logdb-dbfile
./test.db
\
--logdb-buffer-size
5
\
--logdb-buffer-size
5
\
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment