我无法弄清楚如何配置我的log4j,以便我的debugLog和我的reportLog彼此分开(不是附加的).为什么,在下面的配置中,reportsLog始终为空?
log4j.rootLogger=TRACE, stdout, debugLog
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n
log4j.appender.debugLog=org.apache.log4j.FileAppender
log4j.appender.debugLog.File=logs/debug.log
log4j.appender.debugLog.layout=org.apache.log4j.PatternLayout
log4j.appender.debugLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n
log4j.reportsLog=DEBUG,reportsLog
log4j.appender.reportsLog=org.apache.log4j.FileAppender
log4j.appender.reportsLog.File=logs/reports.log
log4j.appender.reportsLog.layout=org.apache.log4j.PatternLayout
log4j.appender.reportsLog.layout.ConversionPattern=%d [%24F:%t:%L] - %m%n
Run Code Online (Sandbox Code Playgroud)
这是我的Java代码:
package test;
import org.apache.log4j.Logger;
import org.apache.log4j.PropertyConfigurator;
public class HelloLogger {
static final Logger debugLog = Logger.getLogger("debugLog");
static final Logger resultLog = Logger.getLogger("reportsLog");
public static void main(String[] args) {
PropertyConfigurator.configure("log4j.properties");
debugLog.debug("Hello debugLog message");
resultLog.debug("Hello reportsLog message");
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试在java中为我正在处理的Android应用发布一些JSON数据.以下是有效的还是我需要以不同的方式推送JSON字符串?
HttpPost httpost = new HttpPost("http://test.localhost");
httpost.setEntity(new StringEntity("{\"filters\":true}"));
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
//... other java code to execute the apache httpclient
Run Code Online (Sandbox Code Playgroud)
先感谢您
有没有一种简单的方法来拦截java中的方法.我需要为所需的方法添加一个注释,以便在通过该方法之前调用一段逻辑.
public void verifyActivity() {
// Asset if you are on a wrong page
}
@VerifyActivity
public void testLogin() {
// Login for my automate test
}
@VerifyActivity
public void testSomethingElse() {
// Test some other UI Automation stuff
}
Run Code Online (Sandbox Code Playgroud)
编辑:
Android应用程序推荐的guice库不包含AOP.是否可以在不添加任何库的情况下使用反射实现此目的?
我正在使用一种非常标准的Java AES加密/解密方式.
byte[] key = hexStringToByteArray("C0C1C2C3C4C5C6C7C8C9CACBCCCDCECF");
byte[] message = hexStringToByteArray("01A0A1A2A3A4A5A6A703020100060001");
SecretKeySpec secretKeySpec = new SecretKeySpec(key, "AES");
// Instantiate the cipher
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
byte[] encrypted = cipher.doFinal(message);
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] original = cipher.doFinal(encrypted);
Run Code Online (Sandbox Code Playgroud)
如您所见,我使用的是128位密钥和128位消息.我总是得到我期望的结果,但加密结果总是256位长.第二个128位始终相同.截断结果除外,如何确保密码只返回前128位,而不更改前128位?我觉得我有点混淆块大小的定义.
import java.util.*;
public class Test {
public static void main(String[] args) {
List db = new ArrayList();
ShopDatabase sb = new ShopDatabase(db);
sb.addEntry(new ProductEntry("film", 30, 400));
sb.addEntry(new CashierEntry("Kate", "Smith", 23, 600));
sb.addEntry(new ManagerEntry("Jack", "Simpson", 1, 700));
sb.addEntry(new ProductEntry("soap", 18, 3));
sb.addEntry(new ManagerEntry("Helen", "Jones", 60, 650));
sb.addEntry(new CashierEntry("Jane", "Tomson", 15, 900));
sb.addEntry(new ProductEntry("shampoo", 25, 5));
sb.addEntry(new CashierEntry("Bill", "Black", 59, 300));
Collections.sort(db);
Iterator itr = db.iterator();
while (itr.hasNext()) {
Entry element = (Entry) itr.next();
System.out.println(element + "\n");
}
}
}
public abstract …Run Code Online (Sandbox Code Playgroud) java ×5
android ×2
aes ×1
annotations ×1
block ×1
cryptography ×1
encryption ×1
http-post ×1
httpclient ×1
interception ×1
json ×1
log4j ×1
logging ×1