Launch4j: วิธีกำหนด parameter ไปให้ app

จากโปรเจค Launch4j ในบทความก่อนหน้านั้น เราได้สร้าง app เล็กๆขึ้นมาแล้ว ต่อมาสมมุติว่าเราต้องการส่งพวก JVM parameter ไปให้ app ละทำไงดี

สมมุติโจทย์

สมมุติว่าโจทย์คือ “ให้ app เราพ่น log ออกมาได้และสามารถกำหนดได้ว่าจะให้พ่นแบบไหนยังไง” ในส่วนของ log ผมจะใช้ sfl4j+log4j ช่วยในการพ่นและก็จะกำหนดให้ app ไปอ่าน log4j.properties ตาม path ที่กำหนดเพื่อจะได้กำหนด format ของข้อความและ path ของ ไฟล์ log ได้

Code & Config

เริ่มจากเพิ่ม log library เข้าไปให้โปรเจคก่อน

		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.6.1</version>
		</dependency>

จากนั้นก็ลองเขียน log ออกมาแล้ว run ซิ

package ninja.tumit.launch4jdemo;

import java.io.IOException;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Hello Launch4j!
 *
 */
public class App 
{
    
    Logger logger = LoggerFactory.getLogger(App.class);

    public void run() {
        try {
            logger.info( "Hello {}! on {}", "Launch4j",  System.getenv("computername"));
            System.in.read();            
        }catch(IOException e) {
            e.printStackTrace();
        }        
    }
    
    
    public static void main( String[] args ) {
        new App().run();
    }
}

log message แดงเถือก

message แดงเถือกกันเลย เพราะเรายังไม่ได้กำหนด properties อะไรให้ log library เลยดังนั้นก็ search หาตัวอย่าง log4j.properties มา ลองใส่เข้าไปใน resources เลย พลั๊กเข้าให้

log.file

run อีกทีควรจะโอเค จากนั้นทดลองเสร็จก็ pack เป็น exe โล้ด การกำหนด log4j.properties ให้ app นั้นต้องใช้ผ่าน JVM parameter ตอน run ด้วย parameter แบบนี้

-Dlog4j.configuration=file:e:\launch4jdemo\cfg\log4j.properties

และส่วนของ launch4j ก็สามารถกำหนด parameter ได้หลายวิธี แต่วิธีที่ผมเลือกใช้คือสร้างไฟ xxx.l4j.ini ในโฟลเดอร์ที่เราแปะ exe แล้วเราก็สร้างไฟล์แล้วใส่ไปเลย
log-cfg
แค่นี้เราก็สามารถส่ง JVM parameter ไปให้ app ของเราได้แล้ว

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s