summaryrefslogtreecommitdiff
path: root/t/068MultilineIndented.t
diff options
context:
space:
mode:
Diffstat (limited to 't/068MultilineIndented.t')
-rw-r--r--t/068MultilineIndented.t81
1 files changed, 81 insertions, 0 deletions
diff --git a/t/068MultilineIndented.t b/t/068MultilineIndented.t
new file mode 100644
index 0000000..275ce98
--- /dev/null
+++ b/t/068MultilineIndented.t
@@ -0,0 +1,81 @@
+my $logfile = "./file.log";
+END { unlink $logfile; }
+
+use Log::Log4perl;
+use Log::Log4perl::Appender;
+use Log::Log4perl::Appender::File;
+use Log::Log4perl::Layout::PatternLayout;
+
+use Test::More tests => 1;
+
+my $logger = Log::Log4perl->get_logger("blah");
+
+# 1 19
+# | |
+# %d : yyyy/mm/dd hh:mm:ss
+my $layout = Log::Log4perl::Layout::PatternLayout->new("%d > %m{indent}%n");
+
+my $appender = Log::Log4perl::Appender->new(
+ "Log::Log4perl::Appender::File",
+ name => 'foo',
+ filename => './file.log',
+ mode => 'append',
+ autoflush => 1,
+ );
+
+# Set the appender's layout
+$appender->layout($layout);
+$logger->add_appender($appender);
+
+my $msg =<<"EOF_MSG";
+This is
+a message with
+multiple lines
+EOF_MSG
+
+chomp($msg);
+
+$appender->log({ level => 1, message => $msg }, 'foo_category', 'INFO');
+
+# TEST :
+#
+# Just one test if format of log file is correct.
+# Any error of check_log_file_format() is returned as non empty string and
+# appended to $test_name to explain what went wrong.
+#
+my $err_str = check_log_file_format($logfile);
+my $test_name = 'log file has multiline intended format' . ($err_str ? " - reason : $err_str" : "");
+ok ( ! $err_str, $test_name );
+
+# returns "" on success
+# returns non empty error string on failure
+sub check_log_file_format {
+ my $logfile = shift;
+
+ my $err_str = "";
+ my $line_count = 1;
+ open(my $fh, "<", $logfile) || return "could not open log file '$logfile'";
+
+ for my $line (<$fh>) {
+ if ($line_count == 1) {
+ # 1 19
+ # | |
+ # yyyy/mm/dd hh:mm:ss > %m
+ unless ( $line =~ m!^\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2} > This is\s*$! ) {
+ $err_str = "first line wrong, should be: yyyy/mm/dd hh::mm::ss This is" ;
+ last;
+ }
+ }
+ else {
+ unless ( $line =~ /^ {22}\S/ ) {
+ $err_str = "format of line $line_count wrong";
+ last;
+ }
+ }
+ $line_count++;
+ }
+
+ close($fh);
+
+ return $err_str;
+}