Skip to content
GitLab
Explorer
Connexion
Navigation principale
Rechercher ou aller à…
Projet
Vivy
Gestion
Activité
Membres
Labels
Programmation
Tickets
Tableaux des tickets
Jalons
Wiki
Wiki externe
Code
Requêtes de fusion
Dépôt
Branches
Validations
Étiquettes
Graphe du dépôt
Comparer les révisions
Compilation
Pipelines
Jobs
Planifications de pipeline
Artéfacts
Aide
Aide
Support
Documentation de GitLab
Comparer les forfaits GitLab
Forum de la communauté
Contribuer à GitLab
Donner votre avis
Raccourcis clavier
?
Extraits de code
Groupes
Projets
Afficher davantage de fils d'Ariane
Elliu
Vivy
Validations
59bacba8
Vérifiée
Valider
59bacba8
rédigé
3 years ago
par
Kubat
Parcourir les fichiers
Options
Téléchargements
Correctifs
Plain Diff
LOG: Add things to log in the VivyApplication class to test the thing
parent
3f1e12d7
Aucune branche associée trouvée
Aucune étiquette associée trouvée
1 requête de fusion
!21
Add clean logs support + dependent MR
Modifications
4
Masquer les modifications d'espaces
En ligne
Côte à côte
Affichage de
4 fichiers modifiés
PreCompiledHeaders.cmake
+1
-0
1 ajout, 0 suppression
PreCompiledHeaders.cmake
src/Lib/Log.cc
+56
-10
56 ajouts, 10 suppressions
src/Lib/Log.cc
src/Lib/Log.hh
+19
-11
19 ajouts, 11 suppressions
src/Lib/Log.hh
src/VivyApplication.cc
+7
-2
7 ajouts, 2 suppressions
src/VivyApplication.cc
avec
83 ajouts
et
23 suppressions
PreCompiledHeaders.cmake
+
1
−
0
Voir le fichier @
59bacba8
...
@@ -8,6 +8,7 @@ set(STL_INC
...
@@ -8,6 +8,7 @@ set(STL_INC
<stdexcept>
<stdexcept>
<sstream>
<sstream>
<map>
<map>
<utility>
<locale>
<locale>
<functional>
<functional>
<initializer_list>
<initializer_list>
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
src/Lib/Log.cc
+
56
−
10
Voir le fichier @
59bacba8
...
@@ -5,6 +5,39 @@ using namespace Vivy;
...
@@ -5,6 +5,39 @@ using namespace Vivy;
LogSink
::~
LogSink
()
noexcept
{}
LogSink
::~
LogSink
()
noexcept
{}
LogMessage
::~
LogMessage
()
noexcept
{
parentLogger
->
sendLogMessage
(
*
this
);
}
LogMessage
::~
LogMessage
()
noexcept
{
parentLogger
->
sendLogMessage
(
*
this
);
}
const
chrono
::
milliseconds
LogMessage
::
getTimeStamp
()
const
noexcept
{
return
timeStamp
;
}
LogMessage
::
Header
const
&
LogMessage
::
getHeader
()
const
noexcept
{
return
messageHeader
;
}
const
std
::
string_view
LogMessage
::
getTextBuffer
()
const
noexcept
{
const
char
*
txt
=
textBuffer
.
data
();
return
std
::
string_view
{
txt
,
strlen
(
txt
)
};
}
void
Logger
::
sendLogMessage
(
const
LogMessage
&
msg
)
const
noexcept
{
parentLogSink
->
recieveLogMessage
(
this
,
msg
);
}
// Get the log message from the logger and add it to the sink's queue.
void
LogSink
::
recieveLogMessage
(
const
Logger
*
const
logger
,
LogMessage
const
&
msg
)
noexcept
{
const
std
::
lock_guard
<
std
::
mutex
>
messageQueueLockGuard
(
messageQueueLock
);
messageQueue
.
emplace_back
(
msg
);
}
std
::
shared_ptr
<
LogSink
>
std
::
shared_ptr
<
LogSink
>
LogSink
::
newSink
()
noexcept
LogSink
::
newSink
()
noexcept
{
{
...
@@ -45,11 +78,6 @@ Logger::logEvent(const char *fileName, const char *functionName, const int lineN
...
@@ -45,11 +78,6 @@ Logger::logEvent(const char *fileName, const char *functionName, const int lineN
.
lineNumberInFile
=
lineNumber
});
.
lineNumberInFile
=
lineNumber
});
}
}
void
Logger
::
sendLogMessage
(
const
LogMessage
&
msg
)
const
noexcept
{
TODO
(
Write
the
code
to
send
the
event
...)
}
LogMessage
::
LogMessage
(
Logger
*
const
logger
,
const
LogMessage
::
Header
hdr
)
noexcept
LogMessage
::
LogMessage
(
Logger
*
const
logger
,
const
LogMessage
::
Header
hdr
)
noexcept
:
messageHeader
(
hdr
)
:
messageHeader
(
hdr
)
,
parentLogger
(
logger
)
,
parentLogger
(
logger
)
...
@@ -57,19 +85,37 @@ LogMessage::LogMessage(Logger *const logger, const LogMessage::Header hdr) noexc
...
@@ -57,19 +85,37 @@ LogMessage::LogMessage(Logger *const logger, const LogMessage::Header hdr) noexc
}
}
LogMessage
&
LogMessage
&
LogMessage
::
operator
<<
(
const
std
::
string
&
)
noexcept
LogMessage
::
operator
<<
(
const
std
::
string
&
msg
)
noexcept
{
{
return
*
this
;
return
(
*
this
<<
msg
.
c_str
())
;
}
}
LogMessage
&
LogMessage
&
LogMessage
::
operator
<<
(
const
int
)
noexcept
LogMessage
::
operator
<<
(
const
QString
&
msg
)
noexcept
{
{
return
*
this
;
return
(
*
this
<<
msg
.
toStdString
());
}
LogMessage
&
LogMessage
::
operator
<<
(
const
int
i
)
noexcept
{
return
(
*
this
<<
static_cast
<
long
>
(
i
));
}
LogMessage
&
LogMessage
::
operator
<<
(
const
long
i
)
noexcept
{
return
(
*
this
<<
std
::
to_string
(
i
));
}
}
LogMessage
&
LogMessage
&
LogMessage
::
operator
<<
(
const
long
)
noexcept
LogMessage
::
operator
<<
(
const
char
*
str
)
noexcept
{
{
const
std
::
size_t
length
=
strlen
(
str
);
for
(
std
::
size_t
i
=
0
;
(
i
<
length
)
&&
(
indexInArray
<
messageBufferLength
-
1
);
++
i
,
++
indexInArray
)
{
textBuffer
[
indexInArray
]
=
str
[
i
];
}
textBuffer
[
indexInArray
]
=
'\0'
;
return
*
this
;
return
*
this
;
}
}
Ce diff est replié.
Cliquez pour l'agrandir.
src/Lib/Log.hh
+
19
−
11
Voir le fichier @
59bacba8
...
@@ -25,6 +25,7 @@ namespace Vivy
...
@@ -25,6 +25,7 @@ namespace Vivy
{
{
class
VivyApplication
;
class
VivyApplication
;
class
VivyCli
;
class
VivyCli
;
class
LogSinkDispatcher
;
class
LogSink
;
class
LogSink
;
class
Logger
;
class
Logger
;
class
LogMessage
;
class
LogMessage
;
...
@@ -41,7 +42,8 @@ enum class LogLevel : int {
...
@@ -41,7 +42,8 @@ enum class LogLevel : int {
};
};
// LogSink is the parent logger. It will recieve messages and display them to a
// LogSink is the parent logger. It will recieve messages and display them to a
// console or to std::cerr or to a file, etc.
// console or to std::cerr or to a file, etc. The save to over file, etc will
// be donne by the LogSinkDispatcher.
class
LogSink
{
class
LogSink
{
VIVY_UNMOVABLE_OBJECT
(
LogSink
)
VIVY_UNMOVABLE_OBJECT
(
LogSink
)
...
@@ -55,15 +57,17 @@ public:
...
@@ -55,15 +57,17 @@ public:
void
closeLoggerClient
(
Logger
*
const
)
noexcept
;
void
closeLoggerClient
(
Logger
*
const
)
noexcept
;
void
closeLoggerClient
(
const
std
::
shared_ptr
<
Logger
>
&
)
noexcept
;
void
closeLoggerClient
(
const
std
::
shared_ptr
<
Logger
>
&
)
noexcept
;
void
recieveLogMessage
(
const
Logger
*
const
,
LogMessage
const
&
)
noexcept
;
private:
private:
std
::
mutex
messageQueueLock
{};
std
::
vector
<
LogMessage
>
messageQueue
;
std
::
vector
<
LogMessage
>
messageQueue
;
std
::
vector
<
std
::
shared_ptr
<
Logger
>>
clientLoggers
;
std
::
vector
<
std
::
shared_ptr
<
Logger
>>
clientLoggers
;
};
};
// Message to be logged, constructed by a logger then send
// Message to be logged, constructed by a logger then send
class
LogMessage
final
{
class
LogMessage
final
{
friend
class
Logger
;
public:
struct
Header
final
{
struct
Header
final
{
const
char
*
fileName
;
const
char
*
fileName
;
const
char
*
functionName
;
const
char
*
functionName
;
...
@@ -72,7 +76,19 @@ class LogMessage final {
...
@@ -72,7 +76,19 @@ class LogMessage final {
};
};
LogMessage
(
Logger
*
const
,
const
Header
)
noexcept
;
LogMessage
(
Logger
*
const
,
const
Header
)
noexcept
;
~
LogMessage
()
noexcept
;
// The message will be send on destruction
Header
const
&
getHeader
()
const
noexcept
;
const
std
::
string_view
getTextBuffer
()
const
noexcept
;
const
chrono
::
milliseconds
getTimeStamp
()
const
noexcept
;
LogMessage
&
operator
<<
(
const
std
::
string
&
)
noexcept
;
LogMessage
&
operator
<<
(
const
QString
&
)
noexcept
;
LogMessage
&
operator
<<
(
const
char
*
)
noexcept
;
LogMessage
&
operator
<<
(
const
int
)
noexcept
;
LogMessage
&
operator
<<
(
const
long
)
noexcept
;
private
:
const
Header
messageHeader
;
const
Header
messageHeader
;
const
chrono
::
milliseconds
timeStamp
{
duration_cast
<
chrono
::
milliseconds
>
(
const
chrono
::
milliseconds
timeStamp
{
duration_cast
<
chrono
::
milliseconds
>
(
chrono
::
system_clock
::
now
().
time_since_epoch
())
};
chrono
::
system_clock
::
now
().
time_since_epoch
())
};
...
@@ -81,14 +97,6 @@ class LogMessage final {
...
@@ -81,14 +97,6 @@ class LogMessage final {
std
::
array
<
char
,
messageBufferLength
>
textBuffer
{};
std
::
array
<
char
,
messageBufferLength
>
textBuffer
{};
std
::
size_t
indexInArray
{
0
};
std
::
size_t
indexInArray
{
0
};
Logger
*
const
parentLogger
;
Logger
*
const
parentLogger
;
public
:
// The message will be send on destruction
~
LogMessage
()
noexcept
;
LogMessage
&
operator
<<
(
const
std
::
string
&
)
noexcept
;
LogMessage
&
operator
<<
(
const
int
)
noexcept
;
LogMessage
&
operator
<<
(
const
long
)
noexcept
;
};
};
// A logger class, a client to LogSink. Will generate and send instances of
// A logger class, a client to LogSink. Will generate and send instances of
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
src/VivyApplication.cc
+
7
−
2
Voir le fichier @
59bacba8
...
@@ -11,19 +11,22 @@ VivyApplication::VivyApplication(int &argc, char **argv)
...
@@ -11,19 +11,22 @@ VivyApplication::VivyApplication(int &argc, char **argv)
void
void
VivyApplication
::
setTheme
(
Theme
theme
)
noexcept
VivyApplication
::
setTheme
(
Theme
theme
)
noexcept
{
{
if
(
theme
==
Theme
::
System
)
if
(
theme
==
Theme
::
System
)
{
logInfo
()
<<
"Set theme to system theme"
;
return
;
return
;
}
const
QString
sheet
=
theme
==
Theme
::
Dark
?
QStringLiteral
(
":qdarkstyle/dark/style.qss"
)
const
QString
sheet
=
theme
==
Theme
::
Dark
?
QStringLiteral
(
":qdarkstyle/dark/style.qss"
)
:
QStringLiteral
(
":qdarkstyle/light/style.qss"
);
:
QStringLiteral
(
":qdarkstyle/light/style.qss"
);
QFile
stylesheet
(
sheet
);
QFile
stylesheet
(
sheet
);
if
(
!
stylesheet
.
exists
())
{
if
(
!
stylesheet
.
exists
())
{
q
Fatal
(
"Missing stylesheet"
)
;
log
Fatal
(
)
<<
"Missing stylesheet
!
"
;
}
else
{
}
else
{
stylesheet
.
open
(
QFile
::
ReadOnly
|
QFile
::
Text
);
stylesheet
.
open
(
QFile
::
ReadOnly
|
QFile
::
Text
);
QTextStream
stylesheetStream
(
&
stylesheet
);
QTextStream
stylesheetStream
(
&
stylesheet
);
setStyleSheet
(
stylesheetStream
.
readAll
());
setStyleSheet
(
stylesheetStream
.
readAll
());
logInfo
()
<<
"Theme set using "
<<
sheet
;
}
}
}
}
...
@@ -56,6 +59,8 @@ VivyApplication::exec() noexcept
...
@@ -56,6 +59,8 @@ VivyApplication::exec() noexcept
mainWindowPtr
=
std
::
make_unique
<
MainWindow
>
();
mainWindowPtr
=
std
::
make_unique
<
MainWindow
>
();
mainWindowPtr
->
show
();
mainWindowPtr
->
show
();
logInfo
()
<<
"Entering the main event loop"
;
// Main loop
// Main loop
return
QApplication
::
exec
();
return
QApplication
::
exec
();
}
}
...
...
Ce diff est replié.
Cliquez pour l'agrandir.
Aperçu
0%
Chargement en cours
Veuillez réessayer
ou
joindre un nouveau fichier
.
Annuler
You are about to add
0
people
to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Enregistrer le commentaire
Annuler
Veuillez vous
inscrire
ou vous
se connecter
pour commenter