Why the variable updates only twice?

I have a script which controls an object in x direction.
It also should give the direction of the object but the variable is only updated twice. If I move to the left in the log is written left if I move to the right after it is written right but if I move to the left again, nothing happens.
Could anyone help?

   var speed = 1;
    static private var direction:String;
    
    function Update () {
    	if(Input.GetKeyDown("left")){
    		direction="left";
    	}
    
    	if(Input.GetKeyDown("right")){
    		direction="right";
    	}
    
    	transform.Translate(Input.GetAxis("Horizontal")*speed*Time.deltaTime,0,0);
    	print(direction);
    }

use Debug.Log instead of print.

I had issues with print before when trying to log the same value… not sure if this a feature or a bug .

==Edit==
tested your code with print (I am using Unity 3.5.6) and it logs fine

As alucardj said it might be the collapse option.