基于javafx项目的log4j 2日志详细配置教程

1.添加pom依赖

 

<properties>
    <log4j.version>2.17.1</log4j.version>
</properties>
<dependencies>
        <!--log4j2 start-->
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-api</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.logging.log4j</groupId>
            <artifactId>log4j-core</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <!--log4j2 end-->
    </dependencies>

2.log4j2.xml文件 

该文件需要放在resource目录下

<?xml version="1.0" encoding="UTF-8"?>

<Configuration status="WARN" monitorInterval="300">   <!-- debug="true" xmlns:log4j="http://jakarta.apache.org/log4j/"-->
    <properties>
        <property name="LOG_HOME">F:\tbyf\javafxProjectCreateByMaven\logs</property>
        <property name="FILE_NAME">sign-info</property>
    </properties>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36}:%M(%L)] - %msg%xEx%n"/>
        </Console>
        <RollingRandomAccessFile name="MyFile"
                                 fileName="${LOG_HOME}/${FILE_NAME}.log"
                                 filePattern="${LOG_HOME}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log">
<!--                                 filePattern="${LOG_HOME}/$${date:yyyy}/${FILE_NAME}-%d{yyyy-MM-dd}-%i.log">-->
            <PatternLayout
                    pattern="[%d{yyyy-MM-dd HH:mm:ss.SSS} %-5level %class{36}:%M(%L)] - %msg%xEx%n"/>
            <Policies>
                <TimeBasedTriggeringPolicy interval="1"/>      <!--每1小时/分/... 生成一个文件, 时间依据filePattern的配置-->
                <SizeBasedTriggeringPolicy size="5 MB"/>
            </Policies>
            <DefaultRolloverStrategy max="30">
<!--                如果要使用date,这里的date要和filePattern匹配不然找不到删除不掉
                    maxDepth匹配删除的层级logs为1,是logs下面的第几个子级就加几 例如:logs/2024 =》maxDepth="2"                                                        -->
<!--                ${LOG_HOME} 自定义引用, $${date:yyyy}时间日期引用 date格式:yyyy-MM-->
                <Delete basePath="${LOG_HOME}/" maxDepth="1">
<!--                <Delete basePath="${LOG_HOME}/$${date:yyyy}/" maxDepth="2">-->
                    <IfFileName glob="*.log" />
                    <!--!Note: 这里的age必须和filePattern协调, 后者是精确到HH, 这里就要写成xH, xd就不起作用
                    另外, 数字最好>2, 否则可能造成删除的时候, 最近的文件还处于被占用状态,导致删除不成功!-->
                    <!--30天-->
                    <IfLastModified age="720H" />
                </Delete>
            </DefaultRolloverStrategy>
        </RollingRandomAccessFile>
    </Appenders>

    <Loggers>
        <!--过滤掉spring和mybatis的一些无用的DEBUG信息-->
        <logger name="org.springframework" level="INFO"/>
        <logger name="org.mybatis" level="INFO"/>
        <Logger name="mylog" level="debug" additivity="false">
            <AppenderRef ref="MyFile"/>
            <AppenderRef ref="Console"/>
        </Logger>
        <Root level="debug">
            <AppenderRef ref="MyFile"/>
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>

</Configuration>

3.Main.java使用示例 

package com.tbyf.wis.main;

import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.ButtonType;
import javafx.scene.control.Label;
import javafx.scene.image.Image;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.BorderPane;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.StageStyle;
//import org.apache.log4j.Logger;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

/**
 * @author TTc
 * @version 1.0
 * @date 2024/5/15 14:06
 */
public class Main extends Application {
private static Logger logger = LogManager.getLogger("Main");
    @Override
    public void start(Stage primaryStage) throws Exception {
        Button button2 = new Button("点击按钮2!");
        button2.setLayoutX(20);
        button2.setLayoutY(50);
        button2.setOnAction(e ->{
            Label label = new Label("被点击后的新窗口!");
            BorderPane borderPane = new BorderPane(label);
            Scene scene = new Scene(borderPane);
            Stage stage = new Stage();
            stage.setScene(scene);
            stage.setWidth(400);
            stage.setHeight(200);
            // 新窗口打开时可操作其他窗口
//            stage.initModality(Modality.NONE);
            // 新窗口打开时不可操作其他窗口
            stage.show();
            //  窗口关闭点击触发
            stage.setOnCloseRequest(event->{
                logger.error("内窗口关闭错误提示~");
                logger.info("内窗窗口关闭按钮被点击了~");
            });
        });
        // 节点node
        Button button = new Button("点击按钮!");
//        按钮的位置
        button.setLayoutX(300);
        button.setLayoutY(300);
        button.setOnAction(e ->{
            Label label = new Label("被点击后的新窗口!~~~~~");
            BorderPane borderPane = new BorderPane(label);
            Scene scene = new Scene(borderPane);
            Stage stage = new Stage();
            stage.setScene(scene);
            // 被点击后弹出窗口的大小
            stage.setWidth(200);
            stage.setHeight(200);
            // 新窗口打开时可操作其他窗口
//            stage.initModality(Modality.NONE);
            // 新窗口打开时不可操作其他窗口,下面两条结合使用
            stage.initOwner(primaryStage);
            stage.initModality(Modality.WINDOW_MODAL);
            stage.show();
        });

        AnchorPane anchorPane = new AnchorPane();
        anchorPane.getChildren().add(button);
        anchorPane.getChildren().add(button2);
        // 场景scene
        Scene scene = new Scene(anchorPane);
        // 窗口stage
        primaryStage.setTitle("案列测试");
        primaryStage.setScene(scene);
        // 是否可变大小
        primaryStage.setResizable(true);
//        自定义窗口图标
        primaryStage.getIcons().add(new Image(getClass().getResourceAsStream("/fxml/image/ico.png")));
        primaryStage.setX(600);
        primaryStage.setY(80);
        primaryStage.setWidth(600);
        primaryStage.setHeight(600);
//        primaryStage.initStyle(StageStyle.UNDECORATED);
        // 窗口边侧栏修饰,有最小化,最大化,关闭按钮
        primaryStage.initStyle(StageStyle.DECORATED);
        //  窗口关闭点击触发
        primaryStage.setOnCloseRequest(event->{
            logger.info("外层窗口关闭按钮被点击了~");
        });
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch();
    }
}

 4.运行结果

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安装和配置JavaFX可以按照以下步骤进行操作: 1. 首先,确保你的JDK版本在1.8之后,并且在11之前。如果你使用的是Java 11或更高版本,那么JavaFX已经从JDK中移除,需要单独安装OpenJFX。检查你的JDK版本,确定是否需要安装OpenJFX。 2. 如果你需要安装OpenJFX,可以按照以下步骤进行操作: a. 下载并安装OpenJFX。你可以从官方网站下载OpenJFX的安装包,并按照安装向导进行安装。确保选择与你的操作系统和JDK版本相匹配的安装包。 b. 在安装OpenJFX时,将安装目录路径添加到环境变量中。这样,你就可以在命令行中直接使用JavaFX相关的命令。 3. 接下来,你需要在你的IDE中配置JavaFX。具体的配置步骤可能因IDE而异,但通常包括以下步骤: a. 在IDE中打开项目的设置或配置对话框。 b. 导航到构建路径或模块路径设置。 c. 添加JavaFX库或模块。这通常涉及指定JavaFX库的路径或模块的名称。 d. 保存配置并重新构建项目。 4. 配置完毕后,你可以创建一个测试类来验证JavaFX是否成功安装和配置。你可以按照以下步骤进行操作: a. 创建一个Java类文件,命名为HelloFX.java。 b. 将给出的测试类代码复制到HelloFX.java文件中。 c. 确保你的IDE已保存并编译该文件。 d. 运行HelloFX类,你应该能够看到一个JavaFX窗口弹出,显示"Hello, JavaFX"以及Java和JavaFX的版本信息。 这些步骤应该能够帮助你安装和配置JavaFX。如果你遇到任何问题,请参考安装包的文档或IDE的帮助文档,或搜索相关的教程和解决方案。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [JavaFx(OpenJFX)安装教程详细版](https://blog.csdn.net/seriseri/article/details/125812723)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值