Clover icon

Coverage Report

  1. Project Clover database Tue Oct 29 2024 21:36:55 GMT
  2. Package jalview.log

File JalviewAppender.java

 

Coverage histogram

../../img/srcFileCovDistChart7.png
29% of files have more coverage

Code metrics

4
8
6
1
96
54
8
1
1.33
6
1.33

Classes

Class Line # Actions
JalviewAppender 43 8 8
0.666666766.7%
 

Contributing tests

This file is covered by 148 tests. .

Source view

1    /*
2    * Jalview - A Sequence Alignment Editor and Viewer ($$Version-Rel$$)
3    * Copyright (C) $$Year-Rel$$ The Jalview Authors
4    *
5    * This file is part of Jalview.
6    *
7    * Jalview is free software: you can redistribute it and/or
8    * modify it under the terms of the GNU General Public License
9    * as published by the Free Software Foundation, either version 3
10    * of the License, or (at your option) any later version.
11    *
12    * Jalview is distributed in the hope that it will be useful, but
13    * WITHOUT ANY WARRANTY; without even the implied warranty
14    * of MERCHANTABILITY or FITNESS FOR A PARTICULAR
15    * PURPOSE. See the GNU General Public License for more details.
16    *
17    * You should have received a copy of the GNU General Public License
18    * along with Jalview. If not, see <http://www.gnu.org/licenses/>.
19    * The Jalview Authors are detailed in the 'AUTHORS' file.
20    */
21    package jalview.log;
22   
23    import java.io.Serializable;
24    import java.nio.charset.StandardCharsets;
25   
26    import javax.swing.JTextArea;
27    import javax.swing.SwingUtilities;
28   
29    import org.apache.logging.log4j.Level;
30    import org.apache.logging.log4j.core.Filter;
31    import org.apache.logging.log4j.core.Layout;
32    import org.apache.logging.log4j.core.LogEvent;
33    import org.apache.logging.log4j.core.appender.AbstractAppender;
34    import org.apache.logging.log4j.core.config.Property;
35   
36    import jalview.log.JLoggerI.LogLevel;
37    import jalview.util.Log4j;
38   
39    /**
40    * From http://textareaappender.zcage.com/ the means to capture the logs, too.
41    * Simple example of creating a Log4j appender that will write to a JTextArea.
42    */
 
43    public class JalviewAppender extends AbstractAppender
44    {
45    public final static String NAME = "JalviewAppender";
46   
 
47  0 toggle public JalviewAppender()
48    {
49  0 this(LogLevel.INFO);
50    }
51   
 
52  75 toggle public JalviewAppender(LogLevel loglevel)
53    {
54  75 super(NAME,
55  75 Log4j.getThresholdFilter(loglevel == null ? Level.INFO
56    : Log4j.log4jLevel(loglevel)),
57    Log4j.getSimpleLayout(), false, new Property[0]);
58    }
59   
 
60  0 toggle protected JalviewAppender(String name, Filter filter,
61    Layout<? extends Serializable> layout, boolean ignoreExceptions,
62    Property[] properties)
63    {
64  0 super(name, filter, layout, ignoreExceptions, properties);
65    // TODO Auto-generated constructor stub
66    }
67   
68    static private JTextArea jTextArea = null;
69   
70    /** Set the target JTextArea for the logging information to appear. */
 
71  75 toggle static public void setTextArea(JTextArea jTextArea)
72    {
73  75 JalviewAppender.jTextArea = jTextArea;
74    }
75   
76    /**
77    * Format and then append the loggingEvent to the stored JTextArea.
78    */
 
79  674 toggle public void append(LogEvent logEvent)
80    {
81  674 final String message = new String(
82    this.getLayout().toByteArray(logEvent), StandardCharsets.UTF_8);
83   
84    // Append formatted message to textarea using the Swing Thread.
85  674 SwingUtilities.invokeLater(new Runnable()
86    {
 
87  651 toggle public void run()
88    {
89  651 if (jTextArea != null)
90    {
91  651 jTextArea.append(message);
92    }
93    }
94    });
95    }
96    }