file column length using awk

1|BANG|KINR|3456
2|BANG2222|KINR|347
3|BANG|KINR|347
4|BANG|KINR|347
5|BANG|KINR|347
6|BANG|KINR|347 
 awk -F"|" ' length($2)>=4||length($4)>=4 {print $0 >"above.txt";next}' test1.txt 

i want required output,because if the 2nd column more than 4 character or 4th column more than 4 character.
OUTPUT:

 1|BANG|KINR|3456
2|BANG2222|KINR|347 

Please help me. it's not working above awk command.

Thanks

awk -F'|' '{if(length($4) > 3 || length($2) > 4) print $0}' infile

Thanks lot it's working fine... one more how to add the filename as parameter...

awk -F'|' '{if(length($4) > 3 || length($2) > 4 ) print $0  >"filename.txt";next}' test1.txt

filename.txt should be parameter

awk -F'|' '(length($4)>3) || (length($2)>4) {print $0  > output}' output="outputfile.txt" test1.txt

bmk,
You may have already noticed this, but to satisfy your requirement, "or 4th column more than 4 character",
the "3" in the below line:

if(length($4) > 3

should be replaced with "4" in which case line 1 of your input file will not be outputed:

if(length($4) > 4

@neutronscott....Thanks lot it's working what i excepted...
and also thanks @mif