|  Download Monolog-Quill        
 Requires PHP 7.1 or newer. Want to use Monolog to write security events to
a Chronicle? This library uses Quill to transcribe log messages
to a Chronicle instance. This can be a public or private Chronicle. Installationcomposer require paragonie/monolog-quill
 Usage<?php
use Monolog\Logger;
use ParagonIE\MonologQuill\QuillHandler;
use ParagonIE\Quill\Quill;
use ParagonIE\ConstantTime\Base64UrlSafe;
use ParagonIE\Sapient\CryptographyKeys\{
    SigningSecretKey,
    SigningPublicKey
};
// Create a Quill for writing data to the Chronicle instance 
$quill = (new Quill())
    ->setChronicleURL('https://chronicle-public-test.paragonie.com/chronicle')
    ->setServerPublicKey(
        new SigningPublicKey(
            Base64UrlSafe::decode('3BK4hOYTWJbLV5QdqS-DFKEYOMKd-G5M9BvfbqG1ICI=')
        )
    )
    ->setClientID('Your Client ID provided by the Chronicle here')
    ->setClientSecretKey(
        new SigningSecretKey('/Loaded from the filesystem or something./')
    );
// Push the Handler to Monolog
$log = new Logger('security');
$handler = (new QuillHandler($quill, Logger::ALERT));
$log->pushHandler($handler);
// Now security events will be logged in your Chronicle
$log->alert(
    'User bob logged in at ' .
    ((new DateTime())->format(\DateTime::ATOM))
);
 Encrypted Message LoggingSimply pass an instance of SealingPublicKeyorSharedEncryptionKeyto the
handler, via thesetEncryptionKey()method, to encrypt log messages. $handler->setEncryptionKey(
    new SealingPublicKey('/Loaded from the filesystem or something./')
);
 Encrypted Message Logging - Complete Example<?php
use Monolog\Logger;
use ParagonIE\MonologQuill\QuillHandler;
use ParagonIE\Quill\Quill;
use ParagonIE\ConstantTime\Base64UrlSafe;
use ParagonIE\Sapient\CryptographyKeys\{
    SealingPublicKey,
    SigningSecretKey,
    SigningPublicKey
};
// Create a Quill for writing data to the Chronicle instance 
$quill = (new Quill())
    ->setChronicleURL('https://chronicle-public-test.paragonie.com/chronicle')
    ->setServerPublicKey(
        new SigningPublicKey(
            Base64UrlSafe::decode('3BK4hOYTWJbLV5QdqS-DFKEYOMKd-G5M9BvfbqG1ICI=')
        )
    )
    ->setClientID('Your Client ID provided by the Chronicle here')
    ->setClientSecretKey(
        new SigningSecretKey('/Loaded from the filesystem or something./')
    );
// Push the Handler to Monolog
$log = new Logger('security');
$handler = (new QuillHandler($quill, Logger::ALERT));
// Set this to an instance of SealingPublicKey or SharedEncryptionKey:
$handler->setEncryptionKey(
    new SealingPublicKey('/Loaded from the filesystem or something./')
);
$log->pushHandler($handler);
// Now security events will be logged in your Chronicle
$log->alert(
    'User bob logged in at ' .
    ((new DateTime())->format(\DateTime::ATOM))
);
 |