summaryrefslogtreecommitdiffstats
path: root/src/Monolog/Formatter/LogmaticFormatter.php
diff options
context:
space:
mode:
Diffstat (limited to 'src/Monolog/Formatter/LogmaticFormatter.php')
-rw-r--r--src/Monolog/Formatter/LogmaticFormatter.php72
1 files changed, 72 insertions, 0 deletions
diff --git a/src/Monolog/Formatter/LogmaticFormatter.php b/src/Monolog/Formatter/LogmaticFormatter.php
new file mode 100644
index 0000000..7a75e00
--- /dev/null
+++ b/src/Monolog/Formatter/LogmaticFormatter.php
@@ -0,0 +1,72 @@
+<?php declare(strict_types=1);
+
+/*
+ * This file is part of the Monolog package.
+ *
+ * (c) Jordi Boggiano <j.boggiano@seld.be>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Monolog\Formatter;
+
+/**
+ * Encodes message information into JSON in a format compatible with Logmatic.
+ *
+ * @author Julien Breux <julien.breux@gmail.com>
+ */
+class LogmaticFormatter extends JsonFormatter
+{
+ const MARKERS = ["sourcecode", "php"];
+
+ /**
+ * @param string
+ */
+ protected $hostname = '';
+
+ /**
+ * @param string
+ */
+ protected $appname = '';
+
+ /**
+ * Set hostname
+ *
+ * @param string $hostname
+ */
+ public function setHostname(string $hostname)
+ {
+ $this->hostname = $hostname;
+ }
+
+ /**
+ * Set appname
+ *
+ * @param string $appname
+ */
+ public function setAppname(string $appname)
+ {
+ $this->appname = $appname;
+ }
+
+ /**
+ * Appends the 'hostname' and 'appname' parameter for indexing by Logmatic.
+ *
+ * @see http://doc.logmatic.io/docs/basics-to-send-data
+ * @see \Monolog\Formatter\JsonFormatter::format()
+ */
+ public function format(array $record): string
+ {
+ if (!empty($this->hostname)) {
+ $record["hostname"] = $this->hostname;
+ }
+ if (!empty($this->appname)) {
+ $record["appname"] = $this->appname;
+ }
+
+ $record["@marker"] = self::MARKERS;
+
+ return parent::format($record);
+ }
+}