├── .github
├── CODE_OF_CONDUCT.md
└── FUNDING.yml
├── Block
└── Adminhtml
│ └── System
│ └── Config
│ └── Form
│ └── Field
│ └── Type.php
├── Config
└── Source
│ └── LoggingLevel.php
├── Handler
├── ConsoleHandler.php
├── GelfHandler.php
├── MagentoHandlerInterface.php
├── MailHandler.php
├── RotatingFileHandler.php
├── SlackHandler.php
└── SocketHandler.php
├── LICENSE
├── Plugin
└── MonologPlugin.php
├── Processor
├── CustomContextProcessor.php
└── ExceptionProcessor.php
├── README.md
├── Tests
└── Unit
│ └── Processor
│ ├── CustomContextProcessorTest.php
│ └── ExceptionProcessorTest.php
├── Transport
└── UdpTransportWrapper.php
├── composer.json
├── etc
├── acl.xml
├── adminhtml
│ └── system.xml
├── config.xml
├── di.xml
└── module.xml
├── i18n
└── fr_FR.csv
└── registration.php
/.github/CODE_OF_CONDUCT.md:
--------------------------------------------------------------------------------
1 | # Contributor Covenant Code of Conduct
2 |
3 | ## Our Pledge
4 |
5 | In the interest of fostering an open and welcoming environment, we as
6 | contributors and maintainers pledge to making participation in our project and
7 | our community a harassment-free experience for everyone, regardless of age, body
8 | size, disability, ethnicity, sex characteristics, gender identity and expression,
9 | level of experience, education, socio-economic status, nationality, personal
10 | appearance, race, religion, or sexual identity and orientation.
11 |
12 | ## Our Standards
13 |
14 | Examples of behavior that contributes to creating a positive environment
15 | include:
16 |
17 | * Using welcoming and inclusive language
18 | * Being respectful of differing viewpoints and experiences
19 | * Gracefully accepting constructive criticism
20 | * Focusing on what is best for the community
21 | * Showing empathy towards other community members
22 |
23 | Examples of unacceptable behavior by participants include:
24 |
25 | * The use of sexualized language or imagery and unwelcome sexual attention or
26 | advances
27 | * Trolling, insulting/derogatory comments, and personal or political attacks
28 | * Public or private harassment
29 | * Publishing others' private information, such as a physical or electronic
30 | address, without explicit permission
31 | * Other conduct which could reasonably be considered inappropriate in a
32 | professional setting
33 |
34 | ## Our Responsibilities
35 |
36 | Project maintainers are responsible for clarifying the standards of acceptable
37 | behavior and are expected to take appropriate and fair corrective action in
38 | response to any instances of unacceptable behavior.
39 |
40 | Project maintainers have the right and responsibility to remove, edit, or
41 | reject comments, commits, code, wiki edits, issues, and other contributions
42 | that are not aligned to this Code of Conduct, or to ban temporarily or
43 | permanently any contributor for other behaviors that they deem inappropriate,
44 | threatening, offensive, or harmful.
45 |
46 | ## Scope
47 |
48 | This Code of Conduct applies both within project spaces and in public spaces
49 | when an individual is representing the project or its community. Examples of
50 | representing a project or community include using an official project e-mail
51 | address, posting via an official social media account, or acting as an appointed
52 | representative at an online or offline event. Representation of a project may be
53 | further defined and clarified by project maintainers.
54 |
55 | ## Enforcement
56 |
57 | Instances of abusive, harassing, or otherwise unacceptable behavior may be
58 | reported by contacting the project team at opengento@gmail.com. All
59 | complaints will be reviewed and investigated and will result in a response that
60 | is deemed necessary and appropriate to the circumstances. The project team is
61 | obligated to maintain confidentiality with regard to the reporter of an incident.
62 | Further details of specific enforcement policies may be posted separately.
63 |
64 | Project maintainers who do not follow or enforce the Code of Conduct in good
65 | faith may face temporary or permanent repercussions as determined by other
66 | members of the project's leadership.
67 |
68 | ## Attribution
69 |
70 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71 | available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
72 |
73 | [homepage]: https://www.contributor-covenant.org
74 |
75 | For answers to common questions about this code of conduct, see
76 | https://www.contributor-covenant.org/faq
77 |
--------------------------------------------------------------------------------
/.github/FUNDING.yml:
--------------------------------------------------------------------------------
1 | # These are supported funding model platforms
2 |
3 | #github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
4 | #patreon: # Replace with a single Patreon username
5 | #open_collective: # Replace with a single Open Collective username
6 | #ko_fi: # Replace with a single Ko-fi username
7 | #tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
8 | #community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
9 | #liberapay: # Replace with a single Liberapay username
10 | #issuehunt: # Replace with a single IssueHunt username
11 | #otechie: # Replace with a single Otechie username
12 | custom: ['https://www.helloasso.com/associations/opengento/formulaires/1']
13 |
--------------------------------------------------------------------------------
/Block/Adminhtml/System/Config/Form/Field/Type.php:
--------------------------------------------------------------------------------
1 | addColumn('custom_logger_key', ['label' => __('Logger key')]);
18 | $this->addColumn('custom_logger_value', ['label' => __('Logger value')]);
19 | $this->_addAfter = false;
20 | $this->_addButtonLabel = __('Add');
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/Config/Source/LoggingLevel.php:
--------------------------------------------------------------------------------
1 | Logger::DEBUG, 'label' => __('Debug')],
20 | ['value' => Logger::INFO, 'label' => __('Info')],
21 | ['value' => Logger::NOTICE, 'label' => __('Notice')],
22 | ['value' => Logger::WARNING, 'label' => __('Warning')],
23 | ['value' => Logger::ERROR, 'label' => __('Error')],
24 | ['value' => Logger::CRITICAL, 'label' => __('Critical')],
25 | ['value' => Logger::ALERT, 'label' => __('Alert')],
26 | ['value' => Logger::EMERGENCY, 'label' => __('Emergency')],
27 | ];
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/Handler/ConsoleHandler.php:
--------------------------------------------------------------------------------
1 | scopeConfig->getValue($this->levelPath));
31 | }
32 |
33 | public function isEnabled(): bool
34 | {
35 | return $this->scopeConfig->isSetFlag($this->isEnabled);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/Handler/GelfHandler.php:
--------------------------------------------------------------------------------
1 | publisher,
30 | $this->scopeConfig->getValue($this->levelPath)
31 | );
32 | }
33 |
34 | public function isEnabled(): bool
35 | {
36 | return $this->scopeConfig->isSetFlag($this->isEnabled);
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Handler/MagentoHandlerInterface.php:
--------------------------------------------------------------------------------
1 | scopeConfig->getValue($this->toPath),
31 | $this->scopeConfig->getValue($this->subjectPath),
32 | $this->scopeConfig->getValue($this->fromPath),
33 | $this->scopeConfig->getValue($this->levelPath)
34 | );
35 | }
36 |
37 | public function isEnabled(): bool
38 | {
39 | return $this->scopeConfig->isSetFlag($this->isEnabled);
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/Handler/RotatingFileHandler.php:
--------------------------------------------------------------------------------
1 | directoryList->getPath(DirectoryList::VAR_DIR),
37 | $this->scopeConfig->getValue($this->filenamePath)
38 | ),
39 | (int) $this->scopeConfig->getValue($this->maxFilesPath),
40 | $this->scopeConfig->getValue($this->levelPath)
41 | );
42 | }
43 |
44 | public function isEnabled(): bool
45 | {
46 | return $this->scopeConfig->isSetFlag($this->isEnabled);
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/Handler/SlackHandler.php:
--------------------------------------------------------------------------------
1 | scopeConfig->getValue($this->tokenPath),
40 | $this->scopeConfig->getValue($this->channelPath),
41 | $this->scopeConfig->getValue($this->usernamePath),
42 | $this->scopeConfig->isSetFlag($this->useAttachmentPath),
43 | $this->scopeConfig->getValue($this->iconEmojiPath),
44 | $this->scopeConfig->getValue($this->levelPath),
45 | $this->scopeConfig->isSetFlag($this->bubblePath),
46 | $this->scopeConfig->isSetFlag($this->useShortAttachmentPath),
47 | $this->scopeConfig->isSetFlag($this->includeContextAndExtraPath)
48 | );
49 | }
50 |
51 | public function isEnabled(): bool
52 | {
53 | return $this->scopeConfig->isSetFlag($this->isEnabled);
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/Handler/SocketHandler.php:
--------------------------------------------------------------------------------
1 | scopeConfig->getValue($this->endpoint));
34 | if ($endpointUrl === '') {
35 | throw new RuntimeException(sprintf(
36 | 'Config key "%s" is missing or empty.',
37 | $this->endpoint
38 | ));
39 | }
40 |
41 | $handler = new MonologSocketHandler($endpointUrl, $this->scopeConfig->getValue($this->levelPath));
42 | $handler->setFormatter(new JsonFormatter(JsonFormatter::BATCH_MODE_NEWLINES));
43 |
44 | return $handler;
45 | }
46 |
47 | public function isEnabled(): bool
48 | {
49 | return $this->scopeConfig->isSetFlag($this->isEnabled);
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) OpenGento
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
--------------------------------------------------------------------------------
/Plugin/MonologPlugin.php:
--------------------------------------------------------------------------------
1 | magentoHandlers as $handler) {
31 | if ($handler->isEnabled()) {
32 | array_unshift($handlers, $handler->getInstance());
33 | }
34 | }
35 |
36 | return [$handlers];
37 | }
38 | }
39 |
--------------------------------------------------------------------------------
/Processor/CustomContextProcessor.php:
--------------------------------------------------------------------------------
1 | scopeConfig = $scopeConfig;
32 | $this->serializer = $serializer;
33 | }
34 |
35 | public function __invoke(LogRecord $records): LogRecord
36 | {
37 | foreach ($this->resolveTypesLogger() as $value) {
38 | $records['context'][$value['custom_logger_key']] = $value['custom_logger_value'];
39 | }
40 |
41 | return $records;
42 | }
43 |
44 | private function resolveTypesLogger(?string $store = null): array
45 | {
46 | return $this->serializer->unserialize(
47 | $this->scopeConfig->getValue('loggin/context/types_logger', ScopeInterface::SCOPE_STORE, $store) ?: '{}'
48 | );
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/Processor/ExceptionProcessor.php:
--------------------------------------------------------------------------------
1 | getTraceAsString();
20 | }
21 |
22 | return $records;
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Gelf Logger Module for Magento 2
2 |
3 | [](https://packagist.org/packages/opengento/logger)
4 | [](./LICENSE)
5 | [](https://packagist.org/packages/opengento/logger/stats)
6 | [](https://packagist.org/packages/opengento/logger/stats)
7 |
8 | This extension sets new logger handlers for Magento2, such as Gelf or Slack and many others.
9 |
10 | - [Setup](#setup)
11 | - [Composer installation](#composer-installation)
12 | - [Setup the module](#setup-the-module)
13 | - [Support](#support)
14 | - [Authors](#authors)
15 | - [License](#license)
16 |
17 | ## Setup
18 |
19 | Magento 2 Open Source or Commerce edition is required.
20 |
21 | ### Composer installation
22 |
23 | Run the following composer command:
24 |
25 | ```
26 | composer require opengento/logger
27 | ```
28 |
29 | ### Setup the module
30 |
31 | Run the following magento command:
32 |
33 | ```
34 | bin/magento setup:upgrade
35 | ```
36 |
37 | **If you are in production mode, do not forget to recompile and redeploy the static resources.**
38 |
39 | ## Support
40 |
41 | Raise a new [request](https://github.com/opengento/logger/issues) to the issue tracker.
42 |
43 | ## Authors
44 |
45 | - **Opengento Community** - *Lead* - [](https://twitter.com/opengento)
46 | - **Contributors** - *Contributor* - [](https://github.com/opengento/logger/graphs/contributors)
47 |
48 | ## License
49 |
50 | This project is licensed under the MIT License - see the [LICENSE](./LICENSE) details.
51 |
52 | ***That's all folks!***
53 |
--------------------------------------------------------------------------------
/Tests/Unit/Processor/CustomContextProcessorTest.php:
--------------------------------------------------------------------------------
1 | []];
21 | $customConfigurationStub = $this->createMock(CustomConfiguration::class);
22 | $customConfigurationStub
23 | ->method('getUnserializedConfigValue')
24 | ->willReturn(['env' => 'test']);
25 |
26 | $processor = new CustomContextProcessor($customConfigurationStub);
27 | $records = $processor($records);
28 |
29 | $this->assertArrayHasKey('env', $records['context']);
30 | }
31 |
32 | /**
33 | * Tests invoke processor without anything in custom context array
34 | */
35 | public function testInvokeWithoutAddContextInformationIntoRecords(): void
36 | {
37 | $records = ['context' => []];
38 |
39 | $customConfigurationStub = $this->createMock(CustomConfiguration::class);
40 | $customConfigurationStub
41 | ->method('getUnserializedConfigValue')
42 | ->willReturn(null);
43 |
44 | $processor = new CustomContextProcessor($customConfigurationStub);
45 | $records = $processor($records);
46 |
47 | $this->assertArrayNotHasKey('env', $records['context']);
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/Tests/Unit/Processor/ExceptionProcessorTest.php:
--------------------------------------------------------------------------------
1 | [], 'context' => ['exception' => new LogicException('Test')]];
26 |
27 | $processor = new ExceptionProcessor();
28 | $records = $processor($records);
29 |
30 | $this->assertArrayHasKey('stacktrace', $records['extra']);
31 | }
32 |
33 | /**
34 | * Tests invoke processor without exception doesn't add extra information.
35 | */
36 | public function testInvokeWithoutAddExtraInformationIntoRecords(): void
37 | {
38 | $records = ['extra' => []];
39 |
40 | $processor = new ExceptionProcessor();
41 | $records = $processor($records);
42 |
43 | $this->assertArrayNotHasKey('stacktrace', $records['extra']);
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/Transport/UdpTransportWrapper.php:
--------------------------------------------------------------------------------
1 | transportFactory = $transportFactory;
78 | $this->scopeConfig = $scopeConfig;
79 | $this->logger = $logger;
80 | $this->hostPath = $hostPath;
81 | $this->portPath = $portPath;
82 | $this->chunkSize = $chunkSize;
83 | $this->ignoredMessages = $ignoredMessages;
84 | unset($this->transporter);
85 | }
86 |
87 | public function __get(string $name)
88 | {
89 | if ($name === 'transporter') {
90 | return $this->{$name} = $this->createTransporter();
91 | }
92 |
93 | return null;
94 | }
95 |
96 | /**
97 | * Sends a Message over this transport.
98 | *
99 | * @param Message $message
100 | *
101 | * @return int the number of bytes sent
102 | */
103 | public function send(Message $message): int
104 | {
105 | if (!in_array($message->getShortMessage(), $this->ignoredMessages, true)) {
106 | try {
107 | return $this->transporter->send($message);
108 | } catch (Exception $e) {
109 | $this->logger->error($e->getMessage(), $e->getTrace());
110 | }
111 | }
112 |
113 | return 0;
114 | }
115 |
116 | private function createTransporter(): UdpTransport
117 | {
118 | return $this->transportFactory->create([
119 | 'host' => $this->scopeConfig->getValue($this->hostPath),
120 | 'port' => $this->scopeConfig->getValue($this->portPath),
121 | 'chunkSize' => $this->chunkSize
122 | ]);
123 | }
124 | }
125 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "opengento/logger",
3 | "description": "This extension sets new logger handlers for Magento2, such as Gelf or Slack and many others.",
4 | "keywords": [
5 | "php",
6 | "magento",
7 | "magento2",
8 | "gelf",
9 | "ELK",
10 | "Graylog",
11 | "Elasticsearch"
12 | ],
13 | "require": {
14 | "php": "^7.1||^8.0",
15 | "magento/framework": ">=100.1.0",
16 | "graylog2/gelf-php": "^1.6.0 || ^2.0.0"
17 | },
18 | "require-dev": {
19 | "magento/magento-coding-standard": "^5",
20 | "magento/marketplace-eqp": "^4.0",
21 | "roave/security-advisories": "dev-master"
22 | },
23 | "type": "magento2-module",
24 | "license": [
25 | "MIT"
26 | ],
27 | "homepage": "https://github.com/opengento/logger",
28 | "authors": [
29 | {
30 | "name": "Opengento Team",
31 | "email": "opengento@gmail.com",
32 | "homepage": "https://opengento.fr/",
33 | "role": "lead"
34 | }
35 | ],
36 | "support": {
37 | "source": "https://github.com/opengento/logger",
38 | "issues": "https://github.com/opengento/logger/issues"
39 | },
40 | "autoload": {
41 | "files": [
42 | "registration.php"
43 | ],
44 | "psr-4": {
45 | "Opengento\\Logger\\": ""
46 | }
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/etc/acl.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/etc/adminhtml/system.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | loggin
16 | Opengento_Logger::config_opengento_logger
17 |
18 |
19 |
20 |
21 | Opengento\Logger\Block\Adminhtml\System\Config\Form\Field\Type
22 | Magento\Config\Model\Config\Backend\Serialized\ArraySerialized
23 | Add key with custom value
24 |
25 |
26 |
27 |
28 |
29 |
30 | Magento\Config\Model\Config\Source\Yesno
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
40 |
41 | Opengento\Logger\Config\Source\LoggingLevel
42 | Messages of this or a higher level will be logged in your log system.
43 |
44 |
45 |
46 |
47 |
48 |
49 | Magento\Config\Model\Config\Source\Yesno
50 |
51 |
52 |
53 | Opengento\Logger\Config\Source\LoggingLevel
54 |
55 |
56 |
57 |
58 |
59 |
60 | Magento\Config\Model\Config\Source\Yesno
61 |
62 |
63 |
64 | To who you want to send the mail, you can specify multiple mails by separating them by a coma (,)
65 |
66 |
67 |
68 | The subject of the mail
69 |
70 |
71 |
72 | From who you want to send the mail
73 |
74 |
75 |
76 | Opengento\Logger\Config\Source\LoggingLevel
77 | Messages of this or a higher level will be logged in mail.
78 |
79 |
80 |
81 |
82 |
83 |
84 | Magento\Config\Model\Config\Source\Yesno
85 |
86 |
87 |
88 | Opengento\Logger\Config\Source\LoggingLevel
89 | Messages of this or a higher level will be logged in files.
90 |
91 |
92 |
93 | Name of file where the logs must be sent (it will be sent in var/log folder)
94 |
95 |
96 |
97 | Messages of this or a higher level will be logged in files.
98 | validate-digits validate-zero-or-greater
99 |
100 |
101 |
102 |
103 |
104 |
105 | Magento\Config\Model\Config\Source\Yesno
106 |
107 |
108 |
109 | Opengento\Logger\Config\Source\LoggingLevel
110 | Messages of this or a higher level will be logged in files.
111 |
112 |
113 |
114 | Slack API token
115 |
116 |
117 |
118 | Slack channel (encoded ID or name)
119 |
120 |
121 |
122 | Name of a bot
123 |
124 |
125 |
126 | Whether the message should be added to Slack as attachment (plain text otherwise)
127 | Magento\Config\Model\Config\Source\Yesno
128 |
129 |
130 |
131 | The emoji name to use (or null)
132 |
133 |
134 |
135 | Whether the messages that are handled can bubble up the stack or not
136 | Magento\Config\Model\Config\Source\Yesno
137 |
138 |
139 |
140 | Whether the the context/extra messages added to Slack as attachments are in a short style
141 | Magento\Config\Model\Config\Source\Yesno
142 |
143 |
144 |
145 | Whether the attachment should include context and extra data
146 | Magento\Config\Model\Config\Source\Yesno
147 |
148 |
149 |
150 |
151 |
152 |
153 | Magento\Config\Model\Config\Source\Yesno
154 |
155 |
156 |
157 |
158 |
159 |
160 | Opengento\Logger\Config\Source\LoggingLevel
161 | Messages of this or a higher level will be logged in your log system.
162 |
163 |
164 |
165 |
166 |
167 |
--------------------------------------------------------------------------------
/etc/config.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
10 |
11 |
12 |
13 | 100
14 | 0
15 |
16 |
17 | 0
18 | 3
19 | logger.log
20 | 100
21 |
22 |
23 | 0
24 | 500
25 | Opengento Logger is talking
26 |
27 |
28 | 0
29 | 500
30 | 1
31 | 1
32 | 0
33 | 0
34 |
35 |
36 | 0
37 | 500
38 |
39 |
40 |
41 |
42 |
43 |
--------------------------------------------------------------------------------
/etc/di.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
9 |
10 |
11 |
12 | loggin/gelf/transport_host
13 | loggin/gelf/transport_port
14 |
15 |
16 |
17 |
18 |
19 | GelfTransport
20 |
21 |
22 |
23 |
24 |
25 | loggin/gelf/is_enabled
26 | loggin/gelf/level
27 | GelfPublisher
28 |
29 |
30 |
31 |
32 |
33 | loggin/mail/is_enabled
34 | loggin/mail/level
35 | loggin/mail/to
36 | loggin/mail/subject
37 | loggin/mail/from
38 |
39 |
40 |
41 |
42 |
43 | loggin/console/is_enabled
44 | loggin/console/level
45 |
46 |
47 |
48 |
49 |
50 | loggin/file/is_enabled
51 | loggin/file/level
52 | loggin/file/filename
53 | loggin/file/max_files
54 |
55 |
56 |
57 |
58 |
59 | loggin/slack/is_enabled
60 | loggin/slack/level
61 | loggin/slack/token
62 | loggin/slack/channel
63 | loggin/slack/username
64 | loggin/slack/use_attachment
65 | loggin/slack/icon_emoji
66 | loggin/slack/bubble
67 | loggin/slack/use_short_attachment
68 | loggin/slack/include_context_and_extra
69 |
70 |
71 |
72 |
73 |
74 |
75 | loggin/socket/is_enabled
76 | loggin/socket/endpoint
77 | loggin/socket/level
78 |
79 |
80 |
81 |
82 |
83 |
84 | - Opengento\Logger\Processor\ExceptionProcessor
85 | - Opengento\Logger\Processor\CustomContextProcessor
86 |
87 |
88 |
91 |
92 |
93 |
94 |
95 |
96 | - GelfHandler
97 | - MailHandler
98 | - ConsoleHandler
99 | - RotatingFileHandler
100 | - SlackHandler
101 | - SocketHandler
102 |
103 |
104 |
105 |
106 |
--------------------------------------------------------------------------------
/etc/module.xml:
--------------------------------------------------------------------------------
1 |
2 |
8 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/i18n/fr_FR.csv:
--------------------------------------------------------------------------------
1 | "Enabled ?", "Activé ?"
2 | "Gelf transport host", "Gelf transport host"
3 | "Gelf transport port", "Gelf transport port"
4 | "Custom configuration", "Configuration personnalisée"
5 | "Add key with custom value", "Ajoute une clé avec des valeurs personnalisées"
6 | "Logger key", "Logger key"
7 | "Logger value", "Logger value"
8 |
--------------------------------------------------------------------------------
/registration.php:
--------------------------------------------------------------------------------
1 |