summaryrefslogtreecommitdiff
path: root/t/003Layout.t
diff options
context:
space:
mode:
Diffstat (limited to 't/003Layout.t')
-rwxr-xr-xt/003Layout.t285
1 files changed, 285 insertions, 0 deletions
diff --git a/t/003Layout.t b/t/003Layout.t
new file mode 100755
index 0000000..0b4db86
--- /dev/null
+++ b/t/003Layout.t
@@ -0,0 +1,285 @@
+###########################################
+# Test Suite for Log::Log4perl
+# Mike Schilli, 2002 (m@perlmeister.com)
+###########################################
+
+BEGIN {
+ if($ENV{INTERNAL_DEBUG}) {
+ require Log::Log4perl::InternalDebug;
+ Log::Log4perl::InternalDebug->enable();
+ }
+}
+
+use warnings;
+use strict;
+
+#########################
+# change 'tests => 1' to 'tests => last_test_to_print';
+#########################
+use Test::More;
+BEGIN { plan tests => 24 };
+
+use Log::Log4perl;
+use Log::Log4perl::Layout;
+
+use Log::Log4perl::Level;
+use Log::Log4perl::Appender::TestBuffer;
+use File::Spec;
+
+my $app = Log::Log4perl::Appender->new(
+ "Log::Log4perl::Appender::TestBuffer");
+
+ok(1); # If we made it this far, we/re ok.
+
+my $logger = Log::Log4perl->get_logger("abc.def.ghi");
+$logger->level($DEBUG);
+$logger->add_appender($app);
+my $layout = Log::Log4perl::Layout::PatternLayout->new(
+ "bugo %% %c{2} %-17F{2} %L hugo");
+$app->layout($layout);
+my $line = __LINE__ + 1;
+$logger->debug("That's the message");
+
+is($app->buffer(), "bugo % def.ghi " .
+ File::Spec->catfile(qw(t 003Layout.t)) .
+ " $line hugo");
+
+############################################################
+# Log the message
+############################################################
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout->new(
+ "The message is here: %m");
+$app->layout($layout);
+$logger->debug("That's the message");
+
+is($app->buffer(), "The message is here: That's the message");
+
+############################################################
+# Log the time
+############################################################
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout->new("[%r] %m");
+$app->layout($layout);
+$logger->debug("That's the message");
+
+like($app->buffer(), qr/^\[\d+\] That's the message$/);
+
+############################################################
+# Log the date/time
+############################################################
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout->new("%d> %m");
+$app->layout($layout);
+$logger->debug("That's the message");
+
+like($app->buffer(),
+ qr#^\d{4}/\d\d/\d\d \d\d:\d\d:\d\d> That\'s the message$#);
+
+############################################################
+# Log the date/time with own timer function
+############################################################
+sub mytimer1 {
+ # 2 days after 1/1/1970 to compensate for time zones
+ return 180000;
+}
+
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout->new(
+ { time_function => \&mytimer1 }, "%d{MM/yyyy}> %m");
+$app->layout($layout);
+$logger->debug("That's the message");
+like($app->buffer(), qr{01/1970});
+
+ # epoch format
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout->new(
+ { time_function => \&mytimer1 }, "%d{e}> %m");
+$app->layout($layout);
+$logger->debug("That's the message");
+like($app->buffer(), qr/^180000/);
+
+############################################################
+# Check SimpleLayout
+############################################################
+$app->buffer("");
+$layout = Log::Log4perl::Layout::SimpleLayout->new();
+$app->layout($layout);
+$logger->debug("That's the message");
+
+is($app->buffer(), "DEBUG - That\'s the message\n");
+
+############################################################
+# Check depth level of %M - with debug(...)
+############################################################
+
+sub mysubroutine {
+ $app->buffer("");
+ $layout = Log::Log4perl::Layout::PatternLayout->new("%M: %m");
+ $app->layout($layout);
+ $logger->debug("That's the message");
+}
+
+mysubroutine();
+is($app->buffer(), 'main::mysubroutine: That\'s the message');
+
+############################################################
+# Check depth level of %M - with debug(...)
+############################################################
+
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout->new("%M: %m");
+$app->layout($layout);
+$logger->debug("That's the message");
+
+is($app->buffer(), 'main::: That\'s the message');
+
+############################################################
+# Check Filename and Line #
+############################################################
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout->new("%F-%L %m");
+$app->layout($layout);
+$line = __LINE__ + 1;
+$logger->debug("That's the message");
+
+like($app->buffer(), qr/003Layout.t-$line That's the message/);
+
+############################################################
+# Don't append a newline if the message already contains one
+############################################################
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout->new("%m%n");
+$app->layout($layout);
+$logger->debug("That's the message\n");
+
+is($app->buffer(), "That\'s the message\n");
+
+############################################################
+# But don't suppress other %ns
+############################################################
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout->new("a%nb%n%m%n");
+$app->layout($layout);
+$logger->debug("That's the message\n");
+
+is($app->buffer(), "a\nb\nThat\'s the message\n");
+
+############################################################
+# Test if the process ID works
+############################################################
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout->new("%P:%m");
+$app->layout($layout);
+$logger->debug("That's the message\n");
+
+like($app->buffer(), qr/^\d+:That's the message$/);
+
+############################################################
+# Test if the hostname placeholder %H works
+############################################################
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout->new("%H:%m");
+$app->layout($layout);
+$logger->debug("That's the message\n");
+
+like($app->buffer(), qr/^[^:]+:That's the message$/);
+
+############################################################
+# Test max width in the format specifiers
+############################################################
+#min width
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout->new("%5.5m");
+$app->layout($layout);
+$logger->debug("123");
+is($app->buffer(), ' 123');
+
+#max width
+$app->buffer("");
+$logger->debug("1234567");
+is($app->buffer(), '12345');
+
+#left justify
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout->new("%-5.5m");
+$app->layout($layout);
+$logger->debug("123");
+is($app->buffer(), '123 ');
+
+############################################################
+# Check depth level of %M - with eval {...}
+############################################################
+
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout->new("%M: %m");
+$app->layout($layout);
+sub foo {
+ eval {
+ $logger->debug("Thats the message");
+ };
+}
+foo();
+is($app->buffer(), 'main::foo: Thats the message');
+
+############################################################
+# Check two levels of %M - with eval {...}
+############################################################
+
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout->new("%M: %m");
+$app->layout($layout);
+sub foo2 {
+ eval {
+ eval {
+ $logger->debug("Thats the message");
+ };
+ };
+}
+foo2();
+is($app->buffer(), 'main::foo2: Thats the message');
+
+############################################################
+# Check depth level of %M - with eval {...}
+############################################################
+
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout->new("%M: %m");
+$app->layout($layout);
+eval {
+ $logger->debug("Thats the message");
+};
+is($app->buffer(), 'main::: Thats the message');
+
+############################################################
+# Non-portable line breaks
+############################################################
+
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout->new("%m\\n");
+$app->layout($layout);
+eval {
+ $logger->debug("Thats the message");
+};
+is($app->buffer(), "Thats the message\n");
+
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout->new("%m\\r\\n");
+$app->layout($layout);
+eval {
+ $logger->debug("Thats the message");
+};
+is($app->buffer(), "Thats the message\r\n");
+
+############################################################
+# Render a multiline message
+############################################################
+
+$app->buffer("");
+$layout = Log::Log4perl::Layout::PatternLayout::Multiline->new("%M: %m%n");
+$app->layout($layout);
+eval {
+ $logger->debug("Thats the\nmultiline\nmessage");
+};
+is($app->buffer(), "main::: Thats the\nmain::: multiline\nmain::: message\n");
+